[英]PHP in_array function doesn't find value
我有这个 PHP 变量:
$values = $response->getValues();
打印这个数组:
Array ( [0] => Array ( [0] => 16777439-3 ) [1] => Array ( [0] => 17425847-3 ) )
然后我有这段代码可以在该数组中找到一个值:
if (in_array("16777439-3", $values)) {
echo "Is in array";
}else{
echo "Isn't in array";
}
但它总是返回“不在数组中”
我还尝试将我的原始变量转换为:
$array2 = json_decode(json_encode($values), true);
但我也得到了同样的回报。
您的值数组如下所示:
[
0 => [
0 => "16777439-3"
],
1 => [
0 => "17425847-3"
]
]
您的顶级元素是 arrays 本身。 in_array
不能像这样进行嵌套搜索。 只有当您的阵列只是
[
0 => "16777439-3"
1 => "17425847-3"
]
要么改变你的结构不使用嵌套数组,要么实现自定义搜索 function:
function custom_in_array($search, $haystack){
foreach($haystack as $key => $value)
{
if(in_array($search, $value))
return true;
}
return false;
}
$values 是一个 arrays 数组,而不是字符串数组。
为了说明,请尝试:
if (in_array("16777439-3", $values[0] )) {
echo "Is in array";
}else{
echo "Isn't in array";
}
您必须进行一些处理才能将 $response->getValues() 转换为字符串数组
您有一个多维数组,因此只需使用array_column
提取0
列:
if (in_array("16777439-3", array_column($values, 0))) {
echo "Is in array";
} else {
echo "Isn't in array";
}
或使用array_merge
展平数组:
if (in_array("16777439-3", array_merge(...$array))) {
echo "Is in array";
} else {
echo "Isn't in array";
}
此外,检查isset
是否设置更快,因此您可以重新索引0
值并检查是否设置了该索引:
if (isset(array_column($values, null, 0)["16777439-3"])) {
echo "Is in array";
} else {
echo "Isn't in array";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.