如何检查多维数组中是否存在值

时间:2014-08-19 12:23:02

标签: php arrays multidimensional-array

我有一个多维数组,它采用与此数组相似的形式。

   $shop = array( array( Title => "rose", 
                  Price => 1.25,
                  Number => 15 
                ),
           array( Title => "daisy", 
                  Price => 0.75,
                  Number => 25,
                ),
           array( Title => "orchid", 
                  Price => 1.15,
                  Number => 7 
                )
         );

我想看看我正在寻找的值是否在数组中,如果是,则返回数组中元素的位置。

4 个答案:

答案 0 :(得分:3)

这是关于PHP手册和评论部分的功能..像魅力一样工作。

<?php
function recursive_array_search($needle,$haystack) {
    foreach($haystack as $key=>$value) {
       $current_key=$key;
       if($needle===$value OR (is_array($value) && recursive_array_search($needle,$value) !== false)) {
            return $current_key;
        }
    }
    return false;
}

在PHP文档中找到此函数:http://www.php.net/array_search

答案 1 :(得分:2)

比Zander显示的更简单的方法,你可以在foreach循环中保存对外键和内键的引用并存储它们。

$outer = "";
$inner = "";
foreach($shop as $outer_key => $inner_array){
  foreach($inner_array as $inner_key => $value) {
    if($value == "rose") {
      $outer = $outer_key;
      $inner = $inner_key;
      break 2;
    }
  }
}

if(!empty($outer)) echo $shop[$outer][$inner];
else echo "value not found";

答案 2 :(得分:1)

您可以array_map使用in_array并返回所需的密钥

$search = 1.25; 

print_r(

array_filter(array_map(function($a){

    if (in_array($search, $a)){
        return $a;
    }

}, $shop))

);

将打印:

Array
(
    [0] => Array
        (
            [Title] => rose
            [Price] => 1.25
            [Number] => 15
        )

)

答案 3 :(得分:0)

php&gt; = 5.5

$shop = array( array( 'Title' => "rose", 
                  'Price' => 1.25,
                  'Number' => 15 
                ),
           array( 'Title' => "daisy", 
                  'Price' => 0.75,
                  'Number' => 25,
                ),
           array( 'Title' => "orchid", 
                 'Price' => 1.15,
                  'Number' => 7 
                )
         );

         $titles = array_column($shop,'Title');

        if(!empty($titles['rose']) && $titles['rose'] == 'YOUR_SEARCH_VALUE'){
            //do the stuff
        }