[英]Comparing Array Values in For Loop (PHP)
我有一個for循環,我想將每個值與數組中的其他值進行比較。 如果重復,則頁面重定向。 如何將值$name[$x]
與$ name數組中的其他值進行比較,無論它們位於$name[$x]
之前還是之后?
for($x=0; $x<4; $x++) {
if($name[$x] == /*Other members of $name*/) {
header("location:../error/duplicates.php");
exit;
}
}
你為什么這樣做:
for($x=0; $x<4; $x++) {
if($name[$x] == /*Other members of array*/) {
header("location:../error/duplicates.php");
exit;
}
}
當您可以使用array_unique
代替時:
if (count(array_unique($name)) < count($name)) {
header("location:../error/duplicates.php");
exit;
}
邏輯基本上是, array_unique
告訴您數組中有多少個唯一項,對嗎? 並且,如果$name
數組包含4個項目,則count(array_unique())
應該返回4。然后,哪個應該與$name
中的項目的count()
相匹配,對嗎? 好吧,如果count(array_unique())
項目少於count()
則意味着重復項被過濾掉了。
在這里,它沒有header
而是echo
,還有一個用於更簡單調試的else
。
$name = array('bob','betty','dan','don'); // no dupes
$name = array('bob','betty','dan','dan'); // dupes
if (count(array_unique($name)) < count($name)) {
echo 'Dupes!';
exit;
}
else {
echo 'No Dupes!';
}
您也可以將array_diff_key
與array_unique
一起array_unique
。 基本上在$name
上執行array_unique
,然后通過array_diff_key
與原始$name
進行比較來運行它。 如果count
大於0
則說明存在重復。
$name = array('bob','betty','dan','don'); // no dupes
$name = array('bob','betty','dan','dan'); // dupes
$name_diff = array_diff_key($name, array_unique($name));
if (count($name_diff) > 0) {
echo 'Dupes!';
echo '<pre>';
print_r($name_diff);
echo '</pre>';
exit;
}
else {
echo 'No Dupes!';
}
編輯我剛剛編輯了最后一個建議,為$name_diff
使用變量,因為如果它返回的值大於0
您現在在數組中具有該值並且可以對其執行操作。
你可以嘗試一下嗎,可以使用in_array
php函數
if (in_array($name[$x], $yourarray)) {
echo $name[$x] ." Exist";
}
對於重復檢查:
if(count($yourarry)> count(array_unique($name))){
//found duplicate
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.