如何将简单数组转换为关联数组?

use*_*755 26 php arrays dictionary associative

在PHP中将简单数组转换为关联数组的最快方法是什么,以便可以在isset($array[$value])?中检查值?

这是进行以下转换的最快方式:

$array = array(1, 2, 3, 4, 5);
$assoc = array();

foreach ($array as $i => $value) {
        $assoc[$value] = 1;
}
Run Code Online (Sandbox Code Playgroud)

Ali*_*xel 33

您的代码完全相当于:

$assoc = array_fill_keys(array(1, 2, 3, 4, 5), 1); // or
$assoc = array_fill_keys(range(1, 5), 1);
Run Code Online (Sandbox Code Playgroud)

array_flip()虽然它可能适用于您的目的,但它不一样.

PHP ref : array_fill_keys(),array_flip()


Fel*_*ing 18

array_flip() 正是这样做:

array_flip()以翻转顺序返回一个数组,即来自trans的键成为值,而来自trans的值成为键.

请注意,trans的值必须是有效键,即它们必须是整数字符串.如果值的类型错误,将发出警告,并且不会翻转有问题的键/值对.

如果值有多次出现,则最新的键将用作其值,而所有其他键将丢失.


但除此之外,PHP中只有一种类型的数组.即使数字("简单",如你所说)数组也是关联的.


A.M*_*ara 14

如果有人仍然想知道如何做到这一点,使用array_combine函数有一个更简单的解决方案。

$array = array(1, 2, 3, 4, 5);
$assoc = array_combine($array,$array);
Run Code Online (Sandbox Code Playgroud)

  • 如果两个密钥相同,这将不起作用! (2认同)