gpt4 book ai didi

php - 数组中的重复键

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:41:43 27 4
gpt4 key购买 nike

在类型转换期间防止重复键的最佳方法是什么?

示例:

//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
)

现在我知道一些聪明人会说这是因为一个 keystring 而另一个 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)

但主要问题是连 key 都拿不到

echo $array['1'] ,PHP_EOL;     //Expected Duplicate key 1
echo $array[1] ,PHP_EOL;

输出

2
2

是否有无需循环即可解决此问题的解决方法?显然我永远不会犯这个错误,除非@PeeHaa埽再次提供啤酒,但我认为任何答案都应该有助于受过教育的 PHP 开发人员。

注意。- 这可以通过 array_valuessort 或任何更改键位置的 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
)

最佳答案

您可以使用 array_values重置数组键的函数。

试试这个:

$obj = (object)array(1,2,3);
$obj->{1} = "Duplicate key 1";
$obj->{2} = "Duplicate key 2";
$obj->{3} = "Duplicate key 3";
$array = (array)$obj ;

$array = array_values($array);
print_r($array);

产生这个:

Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => Duplicate key 1
[4] => Duplicate key 2
[5] => Duplicate key 3
)

或者您甚至可以像这样在转换之前使用 array_values:

$array = array_values((array)$obj);

希望这对您有所帮助!

关于php - 数组中的重复键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15900276/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com