2017-02-05 5 views
0

私の配列は次のとおりです。selectのように配列で検索しますか?国との

$cars = array(
    ['brand' => 'bmw', 'place_1' => 'Munich', 'place_2' => 'Cologne'], 
    ['brand' => 'vw', 'place_1' => 'Berlin', 'place_2' => 'Kopenhagen'], 
    ['brand' => 'hyndai', 'place_1' => 'Miami', 'place_2' => 'Newyork'], 
); 

私は、このコマンドで名前を選択することができます:$車[1] [ 'place_2'] NR。 1は配列内の位置ですが、この値は動的なので "ブランド"で指定する必要があります。

私は$cars['brand' => 'bmw']['place_2']または$cars->brand['bmw']['place2']のようなものが必要ですが、構文が正しくありません。

がどのように私はブランド BMWからplace2例のコードで名前を取得することができ、私は私の配列が正確であると私は選択唯一の真の必要があると思いますか?

私の以前のソースは以下のとおりです。

PHP - find entry by object property from a array of objects

How to search in array of std object (array of object) using in_array php function?

Reference PHP array by multiple indexes

この例のいくつかは動作しますが、誰も選択のように、それは配列で可能ではありませんか?

+0

** foreach **ループを使用してカスタム関数を記述できます。 –

+0

正確に私がすでに回答したように – Datadimension

答えて

0

数字配列インデックスを使用する代わりに、ブランドをアレイキーとして使用します。

この

$cars = [ 
    'bmw' => ['place_1' => 'Munich', 'place_2' => 'Cologne'], 
    'vw' => ['brand' => 'vw', 'place_1' => 'Berlin', 'place_2' => 'Kopenhagen'], 
    'hyndai' => ['brand' => 'hyndai', 'place_1' => 'Miami', 'place_2' => 'Newyork'], 
]; 

ような何かあなたがしたいように、あなたは変数にアクセスすることができます$cars['bmw']['place_1']


PS: "hyndai" は、おそらくタイプミスです - それは、現代

を綴られています
+0

これは私の最初の考えでしたが、これはデータ構造を変更します。元の質問には正確ではありません – Datadimension

0

テストされていませんが、このようなもの

function arraySelect($arr,$brand){ 
     $selection=[]; 
     foreach($arr as $a){ 
       if($a["brand"]=$brand{ 
         array_push($selection,$a); 
       } 
     } 
     return $selection; 
} 
0

@Danielが示唆したようにあなたは、あなたがそれを反復する必要があり、あなたのアレイを再構築する機会を持っていない場合は、このような何か:機能に包まれ

$brand_to_find = 'bmw'; 
$key_to_select = 'place_2'; 

foreach ($cars as $car) { 
    if ($car['brand'] == $brand_to_find) { 
     echo $car[$key_to_select]; 

     // if you're sure that will be no 
     // more `bmw` in your array - break 
     break; 
    } 
} 

すべて:

function findPlaceByBrand($cars, $brand_to_find, $key_to_select) 
{ 
    $result = ''; 

    foreach ($cars as $car) { 
     if ($car['brand'] == $brand_to_find) { 
      $result = $car[$key_to_select]; 

      // if you're sure that will be no 
      // more `bmw` in your array - break 
      break; 
     } 
    } 

    return $result; 
} 

echo findPlaceByBrand($cars, 'bmw', 'place_2'); // Cologne 
echo findPlaceByBrand($cars, 'vw', 'place_1'); // Berlin 
echo findPlaceByBrand($cars, 'honda', 'place_1'); // empty string