2012-01-04 98 views
3

我的英语发布对此非常抱歉。使用in_array在多维数组中搜索

我有一个数组:

Array ([name] => Array 
         ( 
         [0] => Sorry the name is missing! 
         [1] => Sorry the name is to short! 
        ) 
) 

现在我想用in_array为如 “名”,以测试。

if (in_array("name", $false["name"])) { 
echo "the array keys"; 
} 

但它dsnt的工作。请annybody帮助我吗?非常感谢。

+0

当您测试* name *时,测试的结果应该是什么?那个* name *是一个数组还是一个字符串? – hakre 2012-01-04 14:06:08

回答

10

尝试array_key_exists():link

if(array_key_exists('name', $false['name'])) { 
    echo $false['name'][0]; // or [1] .. or whatever you want to echo 
} 
0

in_array()查找精确值。所以你需要指定"Sorry the name is missing!"而不是"name"

例如:

if (in_array("Sorry the name is missing!", $false["name"])) { 
    echo "the array keys"; 
} 

其中:

$false = array('name' => array( 
    0 => 'Sorry the name is missing!', 
    1 => 'Sorry the name is to short!'), 
); 
0

If you are searching for array key name in your main array:

$arr = array("name" => array( 
         "0" => "Sorry the name is missing!", 
         "1" => "Sorry the name is to short!" 
       )); 

if(array_key_exists('name', $arr)) { 
    print_r($arr['name']); 
} else { 
    echo "array key not found"; 
} 

Demo

它不会找到,如果你将在$改编[“名”]搜索,因为它仅包含和在这个级别数组键。

1

也许你需要通过数组先走,然后检查其

function in_multiarray($str, $array) 
{ 
    $exists = false; 

    if (is_array($array)) { 
     foreach ($array as $arr): 
      $exists = in_multiarray($str, $arr); 
     endforeach; 
    } else { 
     echo $array . ' = ' . $str . "\n"; 
     if (strpos($array, $str) !== false) $exists = true; 
    } 

    return $exists; 
} 
3

in_array()不多维数组工作,所以它是不可能在这里使用in_array()。当您在in_array()中搜索“名称”时,它会在第一个数组中搜索并查找名为“name”的数组的键。

更好使用array_key_exists功能。一个例子如下:(记住它仅仅是一个建议代码可能会有所不同)

if(array_key_exists('name', $false['name'])) { 
    echo $false['name'][0]; // or [1] .. or whatever you want to echo 
} 
//$false['name'] array contains your searched data in different keys; 0,1,2,.... 

您可以使用foreach()循环第一阵列,然后使用in_array()搜索,但不会是一个很好的方法,因为它会采取有更多的时间去寻找。
祝您好运:)的

0

如果你想使用in_array 你只需要把作为数组定义了第二个参数 例如

if(in_array('name',$false){ 
//do your stuff 
print_r($false['name']); //this will print the array of name inclusive of [0] and [1] 
} 

有在in_array php manual赋予了更多的例子。请检查一下。