查找密钥是否在多维数组中

时间:2017-12-11 04:54:29

标签: php multidimensional-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;
}

在第二个例子中我得到了真实的结果

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

3 个答案:

答案 0 :(得分:5)

in_array()用于确定是否在数组中。如果您想查找是否存在,那么array_key_exists是您的朋友

请看下面的代码段。

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

答案 1 :(得分:1)

在您的第一个代码中

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

您使用in_array()。这个in_array()函数将元素放入数组中,该元素是否存在于数组中。而且你找到的数值是数组中的关键。您可以使用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']) ....

这就是为什么这种情况属实......

答案 2 :(得分:0)

您必须在此类条件下使用循环。试试这个。

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

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

    }