我有這個(貌似)簡單的PHP問題:
我有一個關聯數組(這反映了一個數據庫表的結構,但是這是不相關的,在這裏),像這樣的:PHP:如何將關聯數組的每個關鍵字與其他關鍵字進行比較,跳過排列?
----------------------------------
id | name | phone
----------------------------------
1 | alice | 12345678
3 | bob | 56789012
9 | zorro | 9
... | ... | ...
----------------------------------
我需要遍歷數組來比較(比如檢查沒有兩個人具有相同的電話號碼)每個密鑰與其他所有其他密鑰,避免重複像check(1,3)和check(3,1)...(我想我可以從等效的數學概念中命名這些duplications
)。
<?php
$table = [
[
"id" => "1",
"name" => "alice",
"phone" => "12345678",
], [
[
"id" => "3",
"name" => "bob",
"phone" => "56789012",
], [
[
"id" => "9",
"name" => "zorro",
"phone" => "9",
],
];
?>
這就是我想:
<?php
foreach ($table as $record1) {
foreach ($table as $record2) {
check($record1["phone"], $record2["phone"]);
}
}
?>
不過,當然這個重複檢查...
通常(在C language
,例如),我會依次遍歷數組thorugh,從外部循環的當前索引旁邊的索引處開始內部循環...但是在PHP中,我被告知我不能順序遍歷一個關聯數組... :-(
所以這個問題是:如何通過PHP關聯數組迭代以將函數應用於任意幾個鍵,從而避免排列?
索引是數字的,但也可以是不連續的:我可以公頃我有一個非常**的「稀疏」表... – MarcoS 2015-03-19 09:43:01