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