2016-11-17 124 views
0

我還是PHP新手,我正在創建一個由人員和車輛組成的PHP數組。迭代PHP數組並檢查重複值

例子:

Array 
(
    "owner" => "Person A", 
    "car" => "BMW" 
), 
Array 
(
    "owner" => "Person B", 
    "car" => "Mercedes" 
), 
Array 
(
    "owner" => "Person B", 
    "car" => "BMW" 
), 
Array 
(
    "owner" => "Person A", 
    "car" => "BMW" 
), 
Array 
(
    "owner" => "Person A", 
    "car" => "DODGE" 
) 

問:

什麼是通過陣列和標誌重複的BMW車輛某甲迭代的正確方法?

謝謝你的時間和幫助!

+0

,因爲你不告訴我們你已經嘗試什麼......在這裏,玩弄這樣的: http://php.net/manual/en/function.count.php或http://php.net/manual/en/function.array-count-values.php – 2016-11-17 20:03:46

回答

1

看完你的問題後(​​雖然很模糊),我想我知道你在追求什麼。

我寫了一小段PHP代碼,將所有數據加載到臨時對象中。該腳本在將其附加到臨時陣列之前檢查車主是否已經擁有一輛車。然後,您可以選擇如何處理重複條目。

注意:我修改了你的初始數組一點點,使這個腳本工作。

`

$data = (object) array 
    (
    array (
     "owner" => "Person A", 
     "car" => "BMW" 
    ), 
    array (
     "owner" => "Person B", 
     "car" => "Mercedes" 
    ), 
    array (
     "owner" => "Person B", 
     "car" => "BMW" 
    ), 
    array (
     "owner" => "Person A", 
     "car" => "BMW" 
    ), 
    array (
     "owner" => "Person A", 
     "car" => "DODGE" 
    ) 

); 

$temp = (object) array(); 
// loop over the object to list every person 
foreach($data as $row){ 

    // check if person already exists in the temp array, if not add it 
    if(!property_exists($temp, $row['owner'])){ 
     $temp->$row['owner'] = array(); 
    }; 

    // load the cars into the right persons array 
    if(in_array($row['car'], $temp->$row['owner'])){ 
     // Duplicate car.. do something. 
    } else { 
     array_push($temp->$row['owner'], $row['car']); 
    } 

} 

echo "<pre>"; 
print_r($temp); 
echo "</pre>"; 

`

這裏有一個現場演示: http://phpfiddle.org/main/code/di0v-ugyr