在类型转换期间防止重复键的最佳方法是什么?
例子 :
//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
)