PHP检查数组中是否存在字符串不起作用

时间:2019-05-02 21:54:08

标签: php arrays

我正在尝试在没有运气的数组中是否存在Vin号​​。这是我的数组结构-

$vin[] = array($data);

Array ( [0] => Array ( [0] => 1C6RR7FG2JS178810 ) [1] => Array ( [0] => 1C6RR7FG2JS178810 ) [2] => Array ( [0] => 1C6RR7FG2JS178810 ) [3] => Array ( [0] => 1C6RR7FG2JS178810 )

以及使用in_array检查数组的方法-

if (in_array("1C6RR7FG2JS178810", $vin)){ 
    echo "found"; 
}else{ 
    echo "not found"; 
} 

但是即使我知道它确实存在,也没有每次都找不到它。我要去哪里错了?

2 个答案:

答案 0 :(得分:2)

请注意,您的数组元素是具有1个元素的数组。您可以使用array_column提取它们。考虑:

if (in_array("1C6RR7FG2JS178810", array_column($vin, "0"))){ 
    echo "found"; 
} else { 
    echo "not found"; 
} 

我怀疑您没有正确添加数据。请注意,使用$vin[] = array($data);会将数据添加到按数组包装的$vin元素中-我想您应该只执行$vin[] = $data;(这可能会循环执行...

答案 1 :(得分:1)

您在数组中附加变量的类型将第二个数组附加到数组中的0键并创建多维数组。

$array[] = ['someX'];

if (in_array('someX', $array[0])){
  echo "yes";
}

在此示例中,someX变量位于0键上,因此数组将如下所示:

Array
(
    [0] => Array
        (
            [0] => someX
        )

)

如果您决定使用多维数组,请查看以下链接: in_array() and multidimensional array

if(array_search('1C6RR7FG2JS178810', array_column($vin, "0")) !== false) {
    echo 'value is in multidim array';
}
else {
    echo 'value is not in multidim array';
}