如何使用索引作为键将 PHP 数组转换为关联数组?

How to convert a PHP array to an associative array, using index as keys?

我有以下数组:

$foo = ["hello", "hi", [5, 10]];

我想将其转换为关联数组,如下所示:

$foo = [
   "0" => "hello",
   "1" => "hi",
   "2" => [5, 10],
];

我该怎么做?

更新

之所以要这样做,是因为在执行shuffle方法的时候,想知道原来的索引是什么。

例如 shuffle($foo) 可能 return:

$foo = [
   "1" => "hi",
   "2" => [5, 10],
   "0" => "hello",
];

不知道您要达到什么目的,但据我所知,您希望将数组索引转换为字符串:

$_foo = [
   "0" => "hello",
   "1" => "hi",
   "2" => [5, 10],
];
$foo = [];

foreach($_foo as $key => $value) {
    $foo[(string) $key] = $value;
}

var_dump($foo);

但我认为将数组索引转换为字符串是荒谬的。我不知道您是否知道,但您已经可以使用索引访问数组:012.

var_dump($foo[1]); // hi

(参见 Andrea 的回答,这是不正确的)

与之前状态相比的唯一变化是键是字符串,而不是整数。

$keys = array_map('strval', array_keys($foo));
$values = array_values($foo);
$foo = array_combine($keys, $values);

没有必要做这样的事情

值已经是 "indexed"。如果你运行

$foo = ["hello", "hi", [5, 10]];
echo $foo[0];

您将获得hello(从0开始)

这是你的数组:

$foo = ["hello", "hi", [5, 10]];

它已经是关联的了。 PHP 为您添加密钥,所以它与执行相同:

$foo = [0 => "hello", 1 => "hi", 2 => [5, 10]];

如果您使用的字符串键是数字,PHP 会为您将它们转换为数字。

您的数组不需要是 "associative" 即可使 shuffle 表现得如您所愿。 所有 PHP 数组都是关联的。您正在寻找问题的错误解决方案。