此代碼應返回TRUE
值:in_array功能無法正常工作
<?php
$return = in_array(array(1, 2), array(1, 2));
?>
但in_array
返回FALSE。
此代碼應返回TRUE
值:in_array功能無法正常工作
<?php
$return = in_array(array(1, 2), array(1, 2));
?>
但in_array
返回FALSE。
in_array
檢查數組是否存在。
你$needle
好好嘗試一下存在於所有都作爲$haystack
的值,這將是確定的,如果你$haystack
在這種情況下,實際上array(1,2)
array(1,2,3,array(1,2))
通知發現裏面果然
如果你想檢查2陣列是否相等,我建議你===
運營商
($a === $b) // TRUE if $a and $b have the same key/value pairs in the same order and of the same types.
根據你的榜樣,你可能想看看array_intersect()你的第二個參數尋找值(列)。它以可能更好地符合您的規格的方式比較陣列。
按照PHP手冊in_array
,該函數的語法是:
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
不是你需要的功能。
您的第一個數組不包含在第二個數組中,它是平等的。
這將返回true:
var_dump(in_array(array(1, 2), array(1, 2, array(1, 2))));
你missunderstand in_array看到offiziell文檔: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";
}
?>
如果第二陣列看起來像這樣
array(array(1, 2));
然後返回true
陣列(1,2)不處於陣列(1,2)是陣列(1,2),
$return = in_array(array(1, 2), array(array(1, 2)));
將返回true。 (更多是yes123的答案的延伸)
你有興趣intersection?
$arr1 = array(1, 2);
$arr2 = array(1, 2);
$return = array_intersect($arr1, $arr2);
if(count($return) === count($arr1)) {
// all are present in arr2
}
但是沒有一個數組包含數組1和2在另一箇中? – 2011-06-01 15:53:14
考慮到你是相當新的看看答案,並選擇,只要你認爲是最好的。 – dynamic 2011-06-01 16:09:04
我有兩個數組,第一個(1,2,3,4,5)和第二個(1,4),我想檢查第二個數組中的元素是否在第一個。如何以簡單的方式做到這一點? – Damien 2011-06-01 16:17:41