2012-08-04 188 views
-1

我有一個數組PHP二維數組搜索

$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,它沒有工作 任何解決方案,將不勝感激

回答

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 

的函數遍歷數組中的元素,搜索日期的子元素。

+0

這工作不錯,但如果我有$用戶[「232」 ] [],我想搜索特定的用戶ID。 ,就像即時通訊也試圖傳遞用戶ID如果(dateIn2DArray('2/2/2012',$ user ['123'])) { echo'trueo'; },給了我一個數組 – meWantToLearn 2012-08-04 16:15:13

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適用於一維數組,因此您必須分別檢查每個子數組。

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']);

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);