通过ID合并两个PHP数组

时间:2018-08-22 09:49:35

标签: php arrays merge union

我从两个foreach循环中获得了两个数组。

Array ([0] => Young Boys [1] => Vidi FC [2] => Ajax [3] => Independiente)

Array ([0] => Dinamo Zagreb [1] => AEK Athens [2] => Dynamo Kyiv [3] => Santos FC)

PHP代码

foreach($html->find('.col-home a') as $element)  
    $array1[] = $element->plaintext;

foreach($html->find('.col-guest a') as $element2)  
    $array2[] = $element2->plaintext;

如何获得此结果?

Young Boys - Dinamo Zagreb
Vidi FC - AEK Athens
Ajax - Dynamo Kyiv
Independiente - Santos FC

谢谢!

4 个答案:

答案 0 :(得分:4)

使用for循环遍历一个数组,并使用索引访问另一个数组并将它们组合到结果数组中。

https://3v4l.org/jkhpK     

$a1 = ['Young Boys', 'Vidi FC', 'Ajax', 'Independiente'];
$a2 = ['Dinamo Zagreb', 'AEK Athens', 'Dynamo Kyiv', 'Santos FC'];
$result = [];
for($i = 0; $i < count($a1); $i++) {
    $result[] = $a1[$i] . ' - ' . $a2[$i];
}

var_dump($result);

5.6.30,hhvm-3.18.5-3.22.0、7.0.28-7.3.0beta2的输出

array(4) {
  [0]=>
  string(26) "Young Boys - Dinamo Zagreb"
  [1]=>
  string(20) "Vidi FC - AEK Athens"
  [2]=>
  string(18) "Ajax - Dynamo Kyiv"
  [3]=>
  string(25) "Independiente - Santos FC"
}

编辑:您还可以在循环中添加isset检查,以确保您不会访问第二个数组中不可用的索引,例如

for($i = 0; $i < count($a1); $i++) {
    if(isset($a1[$i]) && isset($a2[$i])) { 
        $result[] = $a1[$i] . ' - ' . $a2[$i];
    }
}

答案 1 :(得分:2)

浏览一个数组并从另一个数组中找到具有相同索引的项目:

foreach ($array1 as $index => $val1)
    echo $val1.' - '.$array2[$index].'<br />';

如果不确定数组的长度相同,则可以使用更长(或更短)的数组:

$count = max(count($array1), count($array2));
for ($i = 0; $i < $count; $i++)
    echo (isset($array1[$i])?$array1[$i]:'').' - '.(isset($array2[$i])?$array2[$i]:'').'<br />';

编辑:感谢@Xatenev的评论,使用isset()代替@

答案 2 :(得分:0)

尝试

 $a = array( 'Young Boys' ,'Vidi FC' , 'Ajax' , 'Independiente');
   $b = array( 'Dinamo Zagreb', 'AEK Athens', 'Dynamo Kyiv', 'Santos FC');
   foreach ($a as $key => $val){
   echo $val.' - '.$b[$key];
   echo '<br />'; 
   }  

答案 3 :(得分:0)

在foreach中使用最长的数组。

foreach($array2 as $k =>$v){    
    $concrat[$v] = $array1[$k];
}