php数组组合问题
假设我在php中有4个数组,如下所示:php数组组合问题,php,arrays,key,Php,Arrays,Key,假设我在php中有4个数组,如下所示: $a1 = array('a','b'); $a2 = array('1','2'); $b1 = array('a','c'); $b2 = array('3','4'); $header = array('a','b','c'); $row1 = array('1','2',NULL); //value from a2 where value from $a1 is same with $header $row2 = array('3',NULL,
$a1 = array('a','b');
$a2 = array('1','2');
$b1 = array('a','c');
$b2 = array('3','4');
$header = array('a','b','c');
$row1 = array('1','2',NULL); //value from a2 where value from $a1 is same with $header
$row2 = array('3',NULL,'4'); //value from b2 where value from $b1 is same with $header
我想得出如下结果:
$a1 = array('a','b');
$a2 = array('1','2');
$b1 = array('a','c');
$b2 = array('3','4');
$header = array('a','b','c');
$row1 = array('1','2',NULL); //value from a2 where value from $a1 is same with $header
$row2 = array('3',NULL,'4'); //value from b2 where value from $b1 is same with $header
我可以使用$header=array\u unique(array\u merge($a1,$b1)),创建$header
代码>
但是如何创建行1和行2???请尝试以下代码:
foreach($header as $h)
{
if(array_search($h,$a1)===FALSE) {}
$row1[] = $a2[array_search($h,$a1)];
}
foreach($header as $h)
{
if(array_search($h,$b1)===FALSE) {}
$row2[] = $b2[array_search($h,$b1)];
}
$a1 = array('a','b');
$a2 = array('1','2');
$b1 = array('a','c');
$b2 = array('3','4');
$header = array_unique(array_merge($a1,$b1));
$row1 = array();
foreach($header as $k => $v) {
$result = array_search($v, $a1);
if($result === FALSE) {
$row1[$k] = null;
} else {
$row1[$k] = $a2[$k];
}
}
var_dump($row1); // similar for $row2
哪个输出:
array(3) { [0]=> string(1) "1" [1]=> string(1) "2" [3]=> NULL }
请尝试以下代码:
$a1 = array('a','b');
$a2 = array('1','2');
$b1 = array('a','c');
$b2 = array('3','4');
$header = array_unique(array_merge($a1,$b1));
$row1 = array();
foreach($header as $k => $v) {
$result = array_search($v, $a1);
if($result === FALSE) {
$row1[$k] = null;
} else {
$row1[$k] = $a2[$k];
}
}
var_dump($row1); // similar for $row2
哪个输出:
array(3) { [0]=> string(1) "1" [1]=> string(1) "2" [3]=> NULL }
演示:
演示:解决这个问题:
$header = array_unique(array_merge($a1,$b1));
foreach ($header as $k => $v)
{
$i = array_search($v, $a1);
if (isset($i))
$row1[$i] = $a2[$i];
unset ($i);
$i = array_search($v, $b1);
if (isset($i))
$row2[$i] = $b2[$i];
unset ($i);
}
解决这个问题:
$header = array_unique(array_merge($a1,$b1));
foreach ($header as $k => $v)
{
$i = array_search($v, $a1);
if (isset($i))
$row1[$i] = $a2[$i];
unset ($i);
$i = array_search($v, $b1);
if (isset($i))
$row2[$i] = $b2[$i];
unset ($i);
}
您可以通过组合一些array.*
函数来实现这一点
(无循环,无匿名函数)
您可以通过组合一些数组*
函数来实现这一点
(无循环,无匿名函数)
迭代标题字段并用新值填充新数组?(编辑:我计算出模式)它基于$a1和$b1。array\u search()
是您需要的,迭代标题字段并用新值填充新数组?(编辑:我计算出模式)它基于$a1和$b1。array\u search()
这就是你需要的该死的,我完成得太晚了2分钟:(旁注:匿名函数在5.3.0版上可用+该死,我完成得太晚了2分钟:(旁注:匿名函数在5.3.0版上可用+结果与我的目标数组不同([0]=>1[1]=>2[2]=>1)数组([0]=>3[1]=>3[2]=>4)事实上,这很好,我只是在修复一个小问题。.数组搜索返回false,它是0,所以它再次返回,第0个索引。我将发布一个修复结果。结果与我的目标数组不同([0]=>1[1]=>2[2]=>1)数组([0]=>3[1]=>3[2]=>4)事实上,这很好,我只是在修复一个小故障。.数组搜索返回false,它是0,所以它再次返回,第0个索引。我将发布一个修复程序。这个方法比zerkms的更简单。这个方法比zerkms的更简单