在PHP中将简单数组转换为关联数组的最快方法是什么,以便可以在isset($array[$value])
中检查值?
即。进行以下转换的最快方法:
$array = array(1, 2, 3, 4, 5);
$assoc = array();
foreach ($array as $i => $value) {
$assoc[$value] = 1;
}
答案 0 :(得分:32)
您的代码完全等同于:
$assoc = array_fill_keys(array(1, 2, 3, 4, 5), 1); // or
$assoc = array_fill_keys(range(1, 5), 1);
array_flip()
虽然它可能适用于您的目的,但它并不相同。
答案 1 :(得分:18)
array_flip()
正是这样做的:
array_flip()按翻转顺序返回array,即来自 trans 的键成为值, trans 中的值成为键
请注意, trans 的值必须是有效密钥,即它们必须是integer或string。如果值类型错误,则会发出警告,并且 中的键/值对不会被翻转 。
如果值有多次出现,则最新的密钥将用作其值,而所有其他密钥将丢失。
但除此之外,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;
}
可以处理任何无限制元素的简单数组。