[英]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.