簡體   English   中英

in_array function 不工作

[英]in_array function is not working

此代碼應返回TRUE值:

<?php
      $return = in_array(array(1, 2), array(1, 2));
?>

in_array返回 FALSE。

in_array檢查數組中是否存在值。

您的$needle作為$haystack的值根本不存在

如果你的$haystack

array(1,2,3,array(1,2))

請注意,在這種情況下, array(1,2)實際上是按預期在內部找到的

如果您想檢查 2 arrays 是否相等,我建議您使用===運算符

($a === $b) // TRUE if $a and $b have the same key/value pairs in the same order and of the same types.

根據您的示例,您可能需要查看array_intersect() 它以更符合您的規格的方式比較 arrays。

根據in_array的 PHP 手冊,函數的語法是:

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

所以你需要提供一個$needle值作為第一個參數。 這解釋了為什么您的示例返回 FALSE。 但是,這些示例都將返回 TRUE:

in_array(1, array(1, 2));
in_array(2, array(1, 2));
in_array(array(1, 2), array(1, 2, array(1, 2)))

也就是說,如果您准確地解釋您要做什么,它可能會有所幫助。 也許in_array不是您需要的 function。

您的第一個數組不包含在第二個數組中,它是相等的。

這返回真:

var_dump(in_array(array(1, 2), array(1, 2, array(1, 2))));

你對路口感興趣嗎?

$arr1 = array(1, 2);
$arr2 = array(1, 2);

$return = array_intersect($arr1, $arr2);

if(count($return) === count($arr1)) {
    // all are present in arr2
}

第一個參數是您在第二個參數(數組)中查找的值http://php.net/manual/fr/function.in-array.php

你誤解了 in_array 見官方文檔: http://uk.php.net/in_array

<?php
$a = array(array('p', 'h'), array('p', 'r'), 'o');

if (in_array(array('p', 'h'), $a)) {
    echo "'ph' was found\n";
}

if (in_array(array('f', 'i'), $a)) {
    echo "'fi' was found\n";
}

if (in_array('o', $a)) {
    echo "'o' was found\n";
}
?>

數組(1,2)不在數組(1,2)中,它是數組(1,2),

$return = in_array(array(1, 2), array(array(1, 2)));

將返回 true。 (更多 yes123 答案的擴展)

在您的情況下,in_array 的第一個參數不應該是一個數組,而是一個 integer。 您正在使用該代碼執行的操作是檢查數組中是否存在數組,而該數組不存在。 正確的形式是:

in_array(1, array(1, 2)); // true

如果第二個數組看起來像這樣

array(array(1, 2));

然后返回真

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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