簡體   English   中英

PHP in_array function 找不到值

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM