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

时间:2011-05-27 14:04:46

标签: php arrays associative

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

即。进行以下转换的最快方法:

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

foreach ($array as $i => $value) {
        $assoc[$value] = 1;
}

5 个答案:

答案 0 :(得分:32)

您的代码完全等同于:

$assoc = array_fill_keys(array(1, 2, 3, 4, 5), 1); // or
$assoc = array_fill_keys(range(1, 5), 1);

array_flip()虽然它可能适用于您的目的,但它并不相同。

PHP参考:array_fill_keys()array_flip()

答案 1 :(得分:18)

array_flip()正是这样做的:

  

array_flip()按翻转顺序返回array,即来自 trans 的键成为值, trans 中的值成为键

     

请注意, trans 的值必须是有效密钥,即它们必须是integerstring。如果值类型错误,则会发出警告,并且 中的键/值对不会被翻转

     

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


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

答案 2 :(得分:1)

如果仍然有人想知道如何执行此操作,则可以使用array_combine函数来解决此问题。

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

答案 3 :(得分:0)

只需使用此逻辑

$var1 = json_encode($arr1, JSON_FORCE_OBJECT);
$var1 = json_decode($var1);

其中$ arr1是必须转换为关联数组的数组。 这可以通过json_encode和json_decode实现相同的

答案 4 :(得分:0)

function simple_to_associative($array) {
    $new_array = [];
    $i = 0;
    $last_elem = end($array);
    $nr_elems = count($array);
    foreach ($array as $index=>$value) {
        if($i % 2 == 0 && $last_elem == $value) {
            $new_array[$value] = '';
        } elseif($i % 2 == 0) {
            $new_array[$value] = $array[$index + 1];
        }
        $i++;
    }
    return $new_array;
}

可以处理任何无限制元素的简单数组。