在 PHP 中将简单数组转换为关联数组以便可以在 中检查值的最快方法是isset($array[$value])什么?
即进行以下转换的最快方法:
$array = array(1, 2, 3, 4, 5);
$assoc = array();
foreach ($array as $i => $value) {
$assoc[$value] = 1;
}
在 PHP 中将简单数组转换为关联数组以便可以在 中检查值的最快方法是isset($array[$value])什么?
即进行以下转换的最快方法:
$array = array(1, 2, 3, 4, 5);
$assoc = array();
foreach ($array as $i => $value) {
$assoc[$value] = 1;
}
您的代码完全等同于:
$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_flip()正是这样做的:
array_flip()以翻转顺序返回一个数组,即来自trans的键成为值,来自trans的值成为键。
请注意,trans的值必须是有效的键,即它们需要是integer或string。如果值的类型错误,则会发出警告,并且相关的键/值对不会被翻转。
如果一个值出现多次,则最新的键将用作其值,而其他所有键都将丢失。
但除此之外,PHP 中只有一种类型的数组。甚至数字(“简单”,正如你所说的)数组也是关联的。
如果有人仍然想知道如何做到这一点,可以使用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;
}
适用于任何简单的无限元素数组。