$arr = [1,2,3,4,5]怎么用PHP生成新数组[[1,2],[2,3],[3,4],[4,5],[1,3],[2,4],[3,5],[1,4],[2,5],[1,5]]
时间: 2023-07-02 18:22:12 浏览: 34
可以通过双重循环遍历原数组来生成新数组,具体实现如下:
```
$arr = [1,2,3,4,5];
$newArr = [];
for($i=0; $i<count($arr)-1; $i++){
for($j=$i+1; $j<count($arr); $j++){
$newArr[] = [$arr[$i], $arr[$j]];
}
}
```
输出的 `$newArr` 数组即为所需的结果。
相关问题
给了一个数组,需要根据条件重新生成数组,$arr为给定的数组,$num1为每个数组中元素的数量。$num2为生成的新数组的数量。$num1和$num2可以自由设置,怎么用php实现?如: $arr = [ ['id'=>1,'user_id'=>1,'title_name'=>'测试1'], ['id'=>2,'user_id'=>1,'title_name'=>'测试2'], ['id'=>3,'user_id'=>1,'title_name'=>'测试3'], ['id'=>4,'user_id'=>1,'title_name'=>'测试4'], ['id'=>5,'user_id'=>1,'title_name'=>'测试5'], ['id'=>6,'user_id'=>1,'title_name'=>'测试6'], ]; $num1 = 2; //每个标题包标题数量 $num2 = 5; //生成标题包数量
根据您的描述,我理解您的需求是将一个给定的数组按照一定的规则重新生成一个新的数组。以下是一个可能的实现方法:
```php
function generateNewArray($arr, $num1, $num2) {
$newArr = array();
$count = count($arr);
// 计算每个新数组中元素的数量
$numPerNewArr = ceil($count / $num2 / $num1) * $num1;
// 遍历生成新数组
for ($i = 0; $i < $num2; $i++) {
$subArr = array();
// 计算当前新数组应该包含的元素范围
$start = $i * $numPerNewArr;
$end = min($start + $numPerNewArr, $count);
// 将对应范围的元素加入子数组
$subArr = array_slice($arr, $start, $end - $start);
// 如果当前子数组没有满足数量要求,则在末尾补充空元素
if (count($subArr) % $num1 != 0) {
$subArr = array_pad($subArr, $num1 - count($subArr) % $num1, null);
}
// 将子数组按$num1个元素组成新数组,并加入新数组
$newSubArr = array();
for ($j = 0; $j < count($subArr); $j += $num1) {
$newSubArr[] = array_slice($subArr, $j, $num1);
}
$newArr[] = $newSubArr;
}
return $newArr;
}
```
上述函数的实现思路是,首先计算出每个新数组应该包含的元素数量,即$count / $num2 / $num1 * $num1$,然后根据这个数量和新数组的数量循环生成新数组。在每一次循环中,计算当前新数组应该包含的元素范围,并将对应范围的元素加入子数组中。如果当前子数组没有满足数量要求,则在末尾补充空元素。接着,将子数组按$num1个元素组成新数组,并加入新数组中。最后返回新数组即可。
注意,上述实现方法中假设$num1为每个新数组中元素的数量,$num2为生成的新数组的数量。如果您需要将$num1和$num2的含义进行调换,只需要在函数内部进行相应的修改即可。
给了一个数组,需要根据条件重新生成数组,$arr为给定的数组,$num1为每个数组中子数组的数量。$num2为生成的新数组的数量。$num1和$num2可以自由设置,怎么用php实现?如: 需要重新生成5个数组,每个新数组里有三个子数组 $arr = [ ['id'=>1,'user_id'=>1,'title_name'=>'测试1'], ['id'=>2,'user_id'=>1,'title_name'=>'测试2'], ['id'=>3,'user_id'=>1,'title_name'=>'测试3'], ['id'=>4,'user_id'=>1,'title_name'=>'测试4'], ['id'=>5,'user_id'=>1,'title_name'=>'测试5'], ['id'=>6,'user_id'=>1,'title_name'=>'测试6'], ];
根据您的描述,我理解您的需求是将一个给定的数组按照一定的规则重新生成一个新的数组。以下是一个可能的实现方法:
```php
function generateNewArray($arr, $num1, $num2) {
$newArr = array();
$count = count($arr);
// 计算每个新数组中子数组的数量
$numPerNewSubArr = ceil($count / $num1 / $num2);
// 遍历生成新数组
for ($i = 0; $i < $num2; $i++) {
$subArr = array();
// 计算当前新数组应该包含的子数组范围
$start = $i * $num1 * $numPerNewSubArr;
$end = min($start + $num1 * $numPerNewSubArr, $count);
// 将对应范围的元素加入子数组
$subArr = array_slice($arr, $start, $end - $start);
// 如果当前子数组没有满足数量要求,则在末尾补充空元素
if (count($subArr) % $num1 != 0) {
$subArr = array_pad($subArr, $num1 - count($subArr) % $num1, null);
}
// 将子数组按$num1个元素组成新数组,并加入新数组
$newSubArr = array();
for ($j = 0; $j < count($subArr); $j += $num1) {
$newSubArr[] = array_slice($subArr, $j, $num1);
}
$newArr[] = $newSubArr;
}
return $newArr;
}
```
上述函数的实现思路和之前类似。首先计算出每个新数组中子数组的数量,即$count / $num1 / $num2$,然后根据这个数量和新数组的数量循环生成新数组。在每一次循环中,计算当前新数组应该包含的子数组范围,并将对应范围的元素加入子数组中。如果当前子数组没有满足数量要求,则在末尾补充空元素。接着,将子数组按$num1个元素组成新数组,并加入新数组中。最后返回新数组即可。
注意,上述实现方法中假设$num1为每个新数组中子数组的数量,$num2为生成的新数组的数量。如果您需要将$num1和$num2的含义进行调换,只需要在函数内部进行相应的修改即可。