我使用的是多維數組存儲在腳本中的一些信息。有數以百計的額外的按鍵,但這是前三的樣子(私人信息審查):單個多維數組鍵突然消失嗎?
Array
(
[0] => Array
(
[last_name] => LAST NAME
[first_name] => COLLEEN
[middle_name] => F
[dob] => 00/00/87
[sex] => F
[race] => W
[city] => SOME CITY
)
[1] => Array
(
[last_name] => LAST NAME
[first_name] => COLLEEN
[middle_name] => F
[dob] => 00/00/87
[sex] => F
[race] => W
[city] => SOME CITY
)
[2] => Array
(
[last_name] => LAST NAME
[first_name] => STEPHANIE
[middle_name] => L
[dob] => 00/00/74
[sex] => F
[race] => W
[city] => SOME CITY
)
)
我想消除重複鍵值,如$array[1]
,這是$array[0]
重複。要做到這一點,我這樣做:
function multi_array_unique($array)
{
$result = array_map("unserialize", array_unique(array_map("serialize", $array)));
foreach ($result as $key => $value) {
if (is_array($value)) {
$result[$key] = multi_array_unique($value);
}
}
return $result;
}
$unique_array = multi_array_unique($array);
$unique_array = array_values($unique_array);
現在,這確實刪除陣列......所有副本只是我一直沒能找出一個小東西的出色的工作。這是陣列現在看起來如何:
Array
(
[0] => Array
(
[last_name] => LAST NAME
[first_name] => COLLEEN
[middle_name] => F
[dob] => 00/00/87
[race] => W
[city] => SOME CITY
)
[1] => Array
(
[last_name] => LAST NAME
[first_name] => STEPHANIE
[middle_name] => L
[dob] => 00/00/74
[sex] => F
[race] => W
[city] => SOME CITY
)
[2] => Array
(
[last_name] => LAST NAME
[first_name] => ASIA
[middle_name] => ALIA
[dob] => 00/00/88
[sex] => F
[race] => B
[city] => SOME CITY
)
)
在哪裏做了$array[0]["sex"]
去???這是唯一缺少的,我檢查了這個數據集中的93個鍵中的每一個。只有$array[0]
缺少["sex"]
密鑰。我完全被困在這裏。你們有什麼想法?
編輯:
雷能提供有效的解決方案,以實現我想要的結果,但我還是想知道是什麼原因導致原有的錯誤。
這裏是雷人的工作代碼(改編成函數):
function multi_array_unique($multi_array)
{
$newArray = array();
foreach($multi_array as $subArray) {
if(!in_array($subArray, $newArray)) {
$newArray[] = $subArray;
}
}
return $newArray;
}
你們是不是要避免主陣列中只有100%重複的子陣列?如果一個類似的數組有一個不同的值,你想保留它嗎? – Ray
也許PHP並不想做愛XD –
是數組[0]和陣列[1]也是唯一重複的93個鍵? –