PHP - 比较 2 个多维数组,如果数组中的字段相等,则输出值



我在 2 个变量中有 2 个数组,它们在字段中包含完全相同的值(在第一个数组 = "image_id"字段中,在第二个数组中 = "ID-field")。

我需要比较 2 个字段,并希望输出第一个数组的图像路径字符串(如果第一个数组的"ID"字段和第二个数组的字段相等)

像这样:如果来自第一个多阵列的"2146"等于来自第二个多阵列的"2146",则回显苹果.jpg。但这是如何工作的呢?最后几天真的吓坏了我。.提前感谢您的回复。

$multidimensional_array1:

array(4) {
  [0]=>
  string(9) "apple.jpg"
  ["imagepath"]=>
  string(9) "apple.jpg"
  [1]=>
  string(4) "2146"
  ["image_id"]=>
  string(4) "2146"
}
array(4) {
  [0]=>
  string(10) "ananas.jpg"
  ["imagepath"]=>
  string(10) "ananas.jpg"
  [1]=>
  string(4) "2037"
  ["image_id"]=>
  string(4) "2037"
}
array(4) {
  [0]=>
  string(8) "nuts.jpg"
  ["imagepath"]=>
  string(8) "nuts.jpg"
  [1]=>
  string(4) "2024"
  ["image_id"]=>
  string(4) "2024"
}

$multidimensional_array2:

array(2) {
  [0]=>
  string(4) "2146"
  ["ID"]=>
  string(4) "2146"
}
array(2) {
  [0]=>
  string(4) "2037"
  ["ID"]=>
  string(4) "2037"
}
array(2) {
  [0]=>
  string(4) "2024"
  ["ID"]=>
  string(4) "2024"
}

只要数组具有相同的键、长度和顺序,您就可以迭代一个数组并从两者中选取值。

$len = count($arr1);
for ($i = 0; $i < $len; $i++)
{
    if ($arr1[$i]['image_id'] == $arr2[$i]['ID'])
    {
        // output $arr1[$i]['imagepath']
    }
}

如果信息来自同一数据库中的两个表,则最好将这些表连接在一起。如果数组的顺序不同或长度不同(以便$i可以引用两个数组中的不同元素),请使用一个作为查找表:

$lookup = array();
foreach ($arr2 as $element)
{
    $lookup[$element['ID']] = $element;
}
foreach ($arr1 as $element)
{
    if (isset($lookup[$element['image_id']]))
    {
        // output $element['imagepath']
    }
}
foreach($multidimensional_array1 as $arr1){
    foreach($multidimensional_array2 as $arr2){
        if($arr2['id']==$arr1['image_id']){
            echo $arr1['imagepath'];
        }
    }
}

注意:阵列越大,花费的时间就越长。

相关内容

  • 没有找到相关文章

最新更新