簡體   English   中英

在For Loop(PHP)中比較數組值

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

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