簡體   English   中英

查找鍵是否在多維數組中

[英]find if key is in a multidimentional array

我正在創建一個多維數組,我想知道為什么以下代碼無法正常工作,以及為什么在提取相同數組時另一個具有相同值的代碼實際上是有效的。

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

然后在第一種情況下,它返回false

第一種情況:

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

在第二個示例中,我得到的結果為true

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

in_array()用於確定是否在數組中。 如果您想查找密鑰是否存在,那么array_key_exists是您的朋友

請看下面的代碼片段。

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

在您的第一個代碼中

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

您使用in_array() 這個in_array()函數將元素放入數組中,該元素是否存在於數組中。 並且您正在找到一個值,該值是數組中的鍵。 可以使用array_key_exists()代替in_array() array_key_exists()

您的第二個代碼

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

您正在使用isset()這個函數告訴您找到的元素是否存在於代碼中。 就像您正在發現isset($fruit[$find_price])意味着存在的isset($fruit['sale']) 。...

這就是為什么這個條件成立的原因。

您必須對這種類型的條件使用循環。 嘗試這個。

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

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

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM