在多维数组中使用in_array进行搜索

3

抱歉我的英语不太好。

我有一个数组:

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

现在我想用in_array测试例如“name”这样的内容。
if (in_array("name", $false["name"])) {
echo "the array keys";
}

但是它不起作用。能否有人帮助我?非常感谢。


当你测试name时,测试的结果应该是什么?name是一个数组还是一个字符串? - hakre
6个回答

9
尝试使用array_key_exists()函数: 链接
if(array_key_exists('name', $false['name'])) {
    echo $false['name'][0]; // or [1] .. or whatever you want to echo
}

2

in_array()无法处理多维数组,所以在这里使用in_array()是不可能的。当你在in_array()中搜索“name”时,它会在第一个数组中搜索并找到一个名为“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()进行搜索,但这不是一个好的方法,因为它需要花费更多的时间来查找。
祝你好运 :)


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

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手册中提供了更多的示例,请查看。


0

如果你正在主数组中搜索数组键名称

$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";
}

演示

如果你在$arr['name']中搜索,它将无法找到name,因为在这个级别上它只包含01的数组键。


0

in_array()函数用于查找精确值。因此,您需要指定"对不起,名称缺失!"而不仅仅是"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!'),
);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接