1

2つの変数に2つの配列があり、両方のフィールドにまったく同じ値が含まれています(1番目の配列= "image_id"-fieldと2番目の配列="ID-field")。

2つのフィールドを比較する必要があり、1番目の配列のイメージパス文字列を出力したい(「ID」-1番目の配列のフィールドと2番目の配列のフィールドが等しい場合)

このようなもの:1番目のマルチアレイの「2146」が2番目のマルチアレイの「2146」と等しい場合、echo apple.jpg ..しかし、それはどのように機能しますか?それは本当に最後の日私をびっくりさせます..あなたの返事を前もって感謝します。

$ multidimension_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"
}

$ multidimension_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"
}
4

2 に答える 2

2

配列のキー、長さ、順序が同じである限り、1つを繰り返し処理して、両方から値を選択できます。

$len = count($arr1);

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

情報が同じデータベース内の2つのテーブルからのものである場合は、テーブルを結合するだけでよいでしょう。配列が同じ順序になっていないか、同じ長さではない場合($ iが両方の配列の異なる要素を参照するように)、1つをルックアップテーブルとして使用します。

$lookup = array();

foreach ($arr2 as $element)
{
    $lookup[$element['ID']] = $element;
}

foreach ($arr1 as $element)
{
    if (isset($lookup[$element['image_id']]))
    {
        // output $element['imagepath']
    }
}
于 2012-11-19T17:54:46.677 に答える
1
foreach($multidimensional_array1 as $arr1){
    foreach($multidimensional_array2 as $arr2){
        if($arr2['id']==$arr1['image_id']){
            echo $arr1['imagepath'];
        }
    }
}

注:アレイが大きくなると、時間がかかります。

于 2012-11-19T17:56:15.777 に答える