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

| 在PHP中将简单数组转换为关联数组以使值可以在“ 0”中检查的最快方法是什么? 即进行以下转换的最快方法:
$array = array(1, 2, 3, 4, 5);
$assoc = array();

foreach ($array as $i => $value) {
        $assoc[$value] = 1;
}
    
已邀请:
        
array_flip()
正是这样做的:   array_flip()以翻转顺序返回数组,即来自trans的键成为值,而来自trans的值成为键。      请注意,trans的值必须是有效的键,即它们必须是整数或字符串。如果值的类型错误,将发出警告,并且所涉及的键/值对不会被翻转。      如果某个值多次出现,则将最新的键用作其值,所有其他键都将丢失。 但是除此之外,PHP中只有一种类型的数组。甚至是数值数组(您称之为“简单”)也具有关联性。     
        您的代码完全等同于:
$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()
    
        如果仍然有人想知道如何执行此操作,可以使用array_combine函数来解决此问题。
$array = array(1, 2, 3, 4, 5);
$assoc = array_combine($array,$array);
    
        只需使用此逻辑
$var1 = json_encode($arr1, JSON_FORCE_OBJECT);
$var1 = json_decode($var1);
其中$ arr1是必须转换为关联数组的数组。 这可以通过json_encode和json_decode相同来实现     
        
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;
}
适用于任何无限制元素的简单数组。     

要回复问题请先登录注册