2017-03-07 8 views
0

配列を持つ配列arrays of array elementsがあります。だから、今、私はその keyvalueので、それはインデックスが配列の1であるprice=>13sku=>bcすなわちその配列を返す必要があり2=>53=>7skupriceを取得するとします。キーと値の一部がわかっている場合、多次元配列から完全な配列要素またはインデックスを取得する方法

+0

単に配列をループして検索する値を確認してください。一致する場合は、検索した配列があることがわかります。 – Rizier123

+0

@ Rizier123だから私は配列をループしているが、キー値を検索する方法は同じで、キー値はいつか動的であるかもしれない。おそらく2つ以上のキーを比較して、いつかはそれほどではない。 – msonowal

+0

あなたの配列を少し変更して、 (2と3)はそれ自身の配列にあります。あなたはあなたの比較のためにこれらを通ってforeachすることができますか? –

答えて

1

こんにちは私はおそらく、あなたがたが単純な値のために何をしたいん機能array_searchは、あります(Riziersコメントと同じ)

foreach($array as $key => $item) { 
    if($item[2] == 5 && $item[3] == 7) { 
     // return price 
     return $item; 
    } 
} 
+1

返品する$ itemは良いと思うが、OPは両方の価格とSKUが欲しい – Shan

1

を次のようにしようとするだろう。あなたはない$needleがかかります独自の関数を定義しますが、呼び出し可能な述語ができます:私は単に検索からアイテムを返すことができ

$key = array_search_callback(function ($item) { 
    return $item[2] === '5' && $item[3] === '7'; 
}, $array); 

$result = $key === false ? null : $array[$key]; 

:あなたの例は次のように行うことができます。この機能を有する

function array_search_callback(callable $predicate, array $array) 
{ 
    foreach ($array as $key => $item) { 
     if ($predicate($item)) { 
      return $key; 
     } 
    } 

    return false; 
} 

関数。しかし、元の検索機能と一致するように、私はインデックスを返しています。

array_search_callbackは引数として呼び出し可能なので、関数自体を変更することなく、任意の条件を指定できます。

ここはworking demoです。

関連する問題