PHP每隔一个数组合并一次
只是好奇如果有人知道如何合并其他子数组 阿卡 或者。。。。 0+1 2+3 4+5 我想是这样的吧PHP每隔一个数组合并一次,php,multidimensional-array,array-merge,Php,Multidimensional Array,Array Merge,只是好奇如果有人知道如何合并其他子数组 阿卡 或者。。。。 0+1 2+3 4+5 我想是这样的吧 $i=0; $new=array(); foreach($tmp as $k=>$v) { $tmp[$k] = $v; if($i=$k-1) { $new[] = $tmp[$i] + $tmp[$i-1]; /* or something ridiculous like that */ } $i++; } 这假定数组包含偶数个条目。如果情况并非如此,或者如
$i=0; $new=array();
foreach($tmp as $k=>$v) {
$tmp[$k] = $v;
if($i=$k-1) {
$new[] = $tmp[$i] + $tmp[$i-1]; /* or something ridiculous like that */
}
$i++;
}
这假定数组包含偶数个条目。如果情况并非如此,或者如果您希望合并0+1、1+2、2+3,请将
$i
上的增量更改为1,并将$j
的赋值更改为$j=count($tmp)-1
$tmp = array();
$tmp[0] = array(false);
$tmp[1] = array(false);
$tmp[2] = array(true);
$tmp[3] = array(true);
$new = array();
for( $i = 0, $j = count( $tmp); $i < $j; $i += 2)
{
$new[] = array_merge( $tmp[$i], $tmp[$i+1]);
}
$new=array();
对于($i=0,$cnt=count($tmp);$i<$cnt;$i+=2){
$new[]=$tmp[$i]+$tmp[$i+1];
}
使用,您可以想出一个相当简单的解决方案
<?php
$result = array_chunk($tmp, 2);
foreach ($result as &$chunk)
{
$chunk = array_merge($chunk[0], $chunk[1]);
}
你也可以用它来写。如果一个区块有两个以上的元素,调用_user\u func\u array('array\u merge',$chunk)
也可以。噢!甚至更好。感谢您的输入。尽管这看起来很棘手且“很好”-但我永远不会在生产环境中编写如此不明显的代码(是的,对我来说,它看起来有点难以阅读和理解)。具有奇数个条目的数组会导致此操作失败,并出现“注意:未定义的偏移量:”和“致命错误:不支持的操作数类型”,正如我在下面所说的。@nickb:的确如此,但我并没有完成@ehime所有工作的目标,而是给了他一个如何编写基础的想法。顺便说一句,如果$tmp[$i]
不是一个数组,而是一个对象,它将失败,我不会处理它,因为它不在问题的范围之内;所以这不是问题。编辑这篇文章并否决它到底有什么意义,特别是在它被解决和接受之后。荒唐的
array(2) {
[0]=>
array(2) {
[0]=>
bool(false)
[1]=>
bool(false)
}
[1]=>
array(2) {
[0]=>
bool(true)
[1]=>
bool(true)
}
}
$new = array();
for ($i = 0, $cnt = count($tmp); $i < $cnt; $i += 2) {
$new[] = $tmp[$i] + $tmp[$i + 1];
}
<?php
$result = array_chunk($tmp, 2);
foreach ($result as &$chunk)
{
$chunk = array_merge($chunk[0], $chunk[1]);
}