, "two" => $value 对的数组条目移动到索引 0 并保留 $key 原样? 实现-6ren">
gpt4 book ai didi

PHP - 关联数组 : Changing keys for key value pair where value is a class object

转载 作者:可可西里 更新时间:2023-10-31 23:23:14 28 4
gpt4 key购买 nike

我有一个形式的关联数组:

$input = array("one" => <class object1>,
"two" => <class object2,
... //and so on);

$input 的键保证是唯一的。我还有一个名为 moveToHead($key) 的方法,它将 $input[$key] 元素移动到此关联数组的第 0 个位置。我有几个问题:

  1. 是否可以确定关联数组的索引?
  2. 如何将对应的 $key => $value 对的数组条目移动到索引 0 并保留 $key 原样?
  3. 实现上述两点的最佳方法是什么?

我想为第二点做 array_flip(子解决方案),但后来发现 array_flip 只能在数组元素为 int 和 string 时完成。有什么指点吗?

最佳答案

使用名为 array_keys 的函数,您可以确定键的索引:

$keys = array_flip(array_keys($input));
printf("Index of '%s' is: %d\n", $key, $keys[$key]);

要在某个位置(例如开头)插入一个数组,有 array_splice功能。因此,您可以创建要插入的数组,从旧位置删除值并将其拼接在:

$key = 'two';
$value = $input[$key];
unset($input[$key]);
array_splice($input, 0, 0, array($key => $value));

array union operator 也可以实现类似的功能, 但只是因为你想移到顶部:

$key = 'two';
$value = $input[$key];
unset($input[$key]);
$result = array($key => $value) + $input;

但我认为这可能比 array_splice 有更多的开销。

关于PHP - 关联数组 : Changing keys for key value pair where value is a class object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11583576/

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