php 2d数组搜索

时间:2012-08-04 16:01:31

标签: php search associative-array

我有一个数组

$user['123'][]= 2/2/2012;
$user['123'][]= 2/3/2012;
$user['123'][]= 2/4/2012;
  ['123'] => Array
    (
        [0] => 2/2/2012
        [1] => 2/3/2012
        [2] => 2/4/2012
    )

我想做的是检查$ var = 2/3/2012是否在数组中,

我尝试使用in_array,它没有用 任何解决方案将不胜感激

4 个答案:

答案 0 :(得分:3)

像这样的东西

<?php

$user['123'][]= '2/2/2012';
$user['123'][]= '2/3/2012';
$user['123'][]= '2/4/2012';

function dateIn2DArray($date, $haystack) {
  foreach($haystack as $dates) {
    if (in_array($date, $dates)) {
      return true;
    }
  }

  return false;
}

var_dump(dateIn2DArray('2/2/2012', $user)); // true
var_dump(dateIn2DArray('2/2/2013', $user)); // false

该函数循环遍历数组中的元素,搜索日期的子元素。

答案 1 :(得分:0)

$is_in_array = false;
foreach ($user as $sub_array){
    if (in_array("2/3/2012", $sub_array)){
        $is_in_array = true;
        break;
    }
}

关键是in_array适用于一维数组,因此您必须在每个子数组中单独检查。

答案 2 :(得分:0)

检查链接 http://php.net/manual/en/function.in-array.php

$user['123'][]= '2/2/2012';

$user['123'][]= '2/3/2012';

$user['123'][]= '2/4/2012';

$var='2/3/2012';

echo in_array($var, $user['123']);

答案 3 :(得分:0)

这是我编写的一个递归PHP函数,用于深入搜索值:

function in_array_recursive($needle, $haystack){
    if (in_array($needle, $haystack)) return true;
    else{
          foreach ($haystack as $key=>$value){
            if (is_array($haystack[$key])) {
                return in_array_recursive($needle, $haystack[$key]);
                }
          }
          return false;
    }
}

电话:

 echo in_array_recursive($item, $arr);