如何使用索引作为键将 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);
但我认为将数组索引转换为字符串是荒谬的。我不知道您是否知道,但您已经可以使用索引访问数组:0
、1
或 2
.
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 数组都是关联的。您正在寻找问题的错误解决方案。
我有以下数组:
$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);
但我认为将数组索引转换为字符串是荒谬的。我不知道您是否知道,但您已经可以使用索引访问数组:0
、1
或 2
.
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 数组都是关联的。您正在寻找问题的错误解决方案。