0

M は多次元配列を持ち、その中にキー"Apple"が存在するかどうかを確認したいのですが、存在する場合はPrice、その Apple の を取得したいと考えています。

Array_key_exists()関数を試してみましたが、1 次元配列にしか適用できず、

array(1) {
    [0]=>
        array(1) {
            ["Apple"]=>
                array(2) {
                    ["Color"]=>"Red"
                    ["Price"]=>int(50)
                }
            }
}

配列に存在する場合、Apple の価格を取得するにはどうすればよいですか?

4

4 に答える 4

4

これを実現するには、再帰関数を使用します

function getPrice($array, $name) {
    if (isset($array[$name])) {
        return $array[$name]["Price"];
    }

    foreach ($array as $value) {
        if (is_array($value)) {
            $price = getPrice($value, $name);
            if ($price) {
                return $price;
            }
        }
    }

    return false;
}
于 2013-02-14T08:30:50.330 に答える
1

すべての配列を(再帰的に)反復し、それぞれの場合array_key_exists()または(おそらくより良い)をチェックしますisset()

と同じように

function myFinder($bigArray)
{
 $result = false;
 if(array_key_exist($key,$bigArray)) return $bigArray[$key];
 foreach($bigArray as $subArray)
 {
  if(is_array($subArray)
  {
   $result = $result or myFinder($subArray);
  }
 }
 return $result;
}
于 2013-02-14T08:33:50.880 に答える
0

foreach を使用して配列をループします。

foreach ($array AS $fruit) {
    if(isset($fruit['Apple'])) {
        echo $fruit['Apple']['Price'];
    }
}
于 2013-02-14T08:31:28.363 に答える
0
$rows=array(
         array(
               'Apple'=>array('Color'=>'Red', 'Price'=>50)
              )
        );

function get_price($rows, $name)
{
   foreach($rows as $row) {
     if(isset($row[$name])) return $row[$name]['Price'];
   }
   return NULL;
}

echo get_price($rows, 'Apple');
于 2013-02-14T08:36:40.113 に答える