2017-12-11 8 views
0

多次元配列を作成していますが、なぜ次のコードが機能しないのか、そして同じ配列をフェッチするときに同じ値を持つ別のものが実際に動作している理由を知りたい。キーが多次元配列であるかどうかを確認

$find_price = 'sale'; 
if(in_array($find_price, $fruits)){ 
    return true; 
} 
else { 
    return false; 
} 

及び第二の例では、私は真の

決定するために使用
$find_price = 'sale'; 
if(isset($fruit[$find_price])){ 
    return true; 
} 
else { 
    return false; 
} 
+1

'in_array'使用することは意味します。 – urfusion

答えて

5

in_array()の結果を得た:

$fruits = array(
    "sale"=> array("banana", "apple", "orange"), 
    "regular"=> array("grapes", "pear", "ananas") 
); 

は、最初のケースでは、偽

第一ケースを返しますは配列内にあるかどうかを示します。 のキーが存在するので、array_key_existsがあなたの友人であるかどうかを確認したい場合は、

以下のスニペットをご覧ください。

$find_price = 'sale'; 
if(array_key_exists($find_price, $fruits)){ 
    return true; 
} 
else { 
    return false; 
} 
+0

それは、「販売」と「通常」がキーとなり値ではない多次元配列であるためですか? – Mireille28

+1

はい。それはアソシエート配列ですので、 'sale'はキーのように' 0'がシンプルな配列のキーです –

+0

$ fruitとして配列が単純ならin_array( 'sale'、$ fruits)を使用できることを理解していただきありがとうございます= arra( 'セール'、 'レギュラー');私はPHPマニュアルの読んだところで間違っていたことをありがとう。 – Mireille28

0

このタイプの条件にはループを使用する必要があります。これを試して。あなたはin_array()を使用

foreach($fruits as $key => $value) 
    { 

     if($fruits[$key]['sale']) 
     { 
      return true; 
     } 
    else 
    { 
    return false; 
    } 

    } 
1
あなたの最初のコードで

$find_price = 'sale'; 
if(in_array($find_price, $fruits)){ 
    return true; 
} 
else { 
    return false; 
} 

。このin_array()は、要素を配列に機能させます。その要素は配列内に存在するかどうかです。そして配列の中で重要な値を見つけています。 in_array()の代わりにarray_key_exists()を使用できます。あなたはisset()を使用している

あなたの第二のコード

$find_price = 'sale'; 
if(isset($fruit[$find_price])){ 
    return true; 
} 
else { 
    return false; 
} 

この機能は、あなたが見つける要素は、コードまたはない存在であることを伝えます。あなたがisset($fruit[$find_price])を見つけているように、この条件が真である理由が存在しているisset($fruit['sale']) ....

厥..キーのない値のための

関連する問題