在類型轉換過程中防止重複鍵的最佳方法是什麼?Array中的重複鍵
例子:
//Credits @bwoebi
$obj = (object)array(1,2,3);
$obj->{1} = "Duplicate key 1";
$obj->{2} = "Duplicate key 2";
$obj->{3} = "Duplicate key 3";
$array = (array)$obj ;
print_r($array);
輸出
Array
(
[0] => 1
[1] => 2
[2] => 3
[1] => Duplicate key 1
[2] => Duplicate key 2
[3] => Duplicate key 3
)
現在我知道有些聰明人會說其因爲一個key
是string
和其他int
使用var_dump
var_dump($array);
輸出
array (size=6)
0 => int 1
1 => int 2
2 => int 3
'1' => string 'Duplicate key 1' (length=15)
'2' => string 'Duplicate key 2' (length=15)
'3' => string 'Duplicate key 3' (length=15)
但主要問題是沒有辦法,甚至拿到鑰匙
echo $array['1'] ,PHP_EOL; //Expected Duplicate key 1
echo $array[1] ,PHP_EOL;
輸出
2
2
有任何解決方法這個問題,而不必循環?很明顯,除非@PeeHaa埽再次提供啤酒,否則我絕對不會犯這個錯誤,但我認爲任何答案都應該有助於教育開發人員PHP
。
注意。 - 這可以伊斯利與array_values
,sort
或任何PHP函數改變鍵位置
例
sort($array);
print_r($array);
輸出
Array
(
[0] => Duplicate key 1
[1] => Duplicate key 2
[2] => Duplicate key 3
[3] => 1
[4] => 2
[5] => 3
)
是關於防止鍵或有關訪問正確的價值觀「複製」這個問題? – PeeHaa 2013-04-09 11:15:18
@PeeHaa埽我會說這兩個.... – Baba 2013-04-09 11:17:59