Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php数组组合问题_Php_Arrays_Key - Fatal编程技术网

php数组组合问题

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,

假设我在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,'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的更简单