2017-01-24 3 views
0

私は2つの配列を持っています。 1つのアレイはId &で構成され、別のアレイは値&のキーで構成されます。例えば。cakephpは2つの配列の間の条件を満たすことで配列要素を見つけますか?

array(
    'fruit_id' => array(
     (int) 0 => '3', 
     (int) 1 => '4' 
    ) 
) 

とで構成されてい果物と呼ばれる別の配列、::私はで構成されていFruit_idと呼ばれる変数、持ってfruit_idに基づくので

array(
    'values' => array(
     (int) 1 => ' Apple', 
     (int) 2 => 'Banana', 
     (int) 3 => 'Orange', 
     (int) 4 => 'Mango' 
    ), 
    'keys' => array(
     (int) 0 => (int) 1, 
     (int) 1 => (int) 2, 
     (int) 2 => (int) 3, 
     (int) 3 => (int) 4 
    ) 
) 

を、私はしたいですhave オレンジ & マンゴーは変数に格納されています。これはどのように達成できますか?

+0

2番目の配列に 'keys'を使用するとは何ですか? –

+0

'values'と' keys'と 'fruit_id'の関連付けについてもっと詳しく教えてください。 –

+0

値とキーはrequestActionによってjson形式で導出されています。デコードされています。 fruit _idは可変果実のキーであるidで構成されています。 – interstellar

答えて

0

ます。これは、配列を返しますコード

$fruits = array(); 

foreach ($array1['fruit_id'] as $key1 => $value1) 
{ 
    foreach ($array2['values'] as $key2 => $value2) 
    { 
     if ($value1 == $key2) 
     { 
      $fruits[$value1] = $value2; 
     } 
    } 
} 

print_r($fruits); 

下に試すことができます私の理解あたりとして([3] =>オレンジ[4] =>マンゴー)

このことができますなら、私を知ってみましょうあなたや必要な変更があります

+0

ありがとうございました。それは完全にうまくいった。再度、感謝します。 – interstellar

+0

ようこそ、答えを投票し、正しいとマークすることを検討してください。 –

0

これは、ループを使用しなくても簡単に達成できます。代わりにarray_filter()を使用してください。

$array1 = array("fruit_id" => array(3, 4)); 

$array2 = array(
    "values" => array(1 => "Apple",2 => "Banana",3 => "Orange", 4 => "Mango"), 
    "keys" => array(1,2,3,4) 
); 

/* Filter elements from $array2['values'] whose keys are present in $array1['fruit_id'] */ 

$result = array_filter($array2['values'], function($v, $k) use ($array1){ 
    return in_array($k, $array1['fruit_id']); 
}, ARRAY_FILTER_USE_BOTH); 

echo implode(' & ', $result); // Convert array to string separated by '&' 
関連する問題