在PHP中将列表(数组)转换为关联数组

在PHP中将列表(数组)转换为关联数组,php,arrays,associative-array,Php,Arrays,Associative Array,我想转换PHP列表(数组),即 进入具有真实值的关联数组(只是为了能够快速测试键的存在/不存在),例如: array( "start" => 1, "end" => 1, "coords" => 1 ) 还有比这更优雅的方法吗 array_fill_keys($ar, 1) 有一个名为array\u flip的函数可以执行此操作 对我来说,在数组上执行array\u flip,然后使用isset比在数组中执行要快得多 但是请注意,这只在您要多次搜索

我想转换PHP列表(数组),即

进入具有真实值的关联数组(只是为了能够快速测试键的存在/不存在),例如:

array(
    "start" => 1,
    "end" => 1,
    "coords" => 1
)
还有比这更优雅的方法吗

array_fill_keys($ar, 1)

有一个名为
array\u flip
的函数可以执行此操作

对我来说,在数组上执行
array\u flip
,然后使用
isset
比在数组中执行
要快得多


但是请注意,这只在您要多次搜索数组时才有用。

可能没有比
数组填充键($ar,1)更优雅的解决方案了。
还有什么比调用一个内置函数更优雅的呢?@Felix我知道这听起来很奇怪,但我发现这种方法相当笨拙……如果让您感觉更好,您可以迭代数组;)PHP没有集合,因此这是您可以做到的最好的方法。当然,您可以创建自己的函数:
functionsetify($array){returnarray\u fill_keys($ar,true)}
或者类似的东西。或者你会期望什么?有没有像数组填充键这样的函数?@sandeep:\u array
中的
无论如何都很慢(与
isset
相比),因为它必须进行线性搜索<代码>数组翻转
是一种可能性,但请注意,第一个条目的值为
0
,因此不会计算为
true
(例如
if($arr[firstEntry])
)。当然,无论如何都应该使用
isset
,因此实际值并不重要(只要它们不是
null
)。@Tomas:你还怎么测试元素的存在?只需执行
if($arr[value])
就会给您一个
通知:
如果密钥不在数组中。是的,
在数组中
很慢。但是,如果我使用此方法检查数组中是否存在值,则它必须以任何方式处理数组中的每个项。我确信散列字符串并使其成为数组键的时间比它是否等于
$needle
所花费的时间要长。此外,此方法占用更多内存-但如果您检查是否有大量字符串,这将非常有用。@Thomas,然后只需说
$result[$originalArray[0]]=1
,现在您可以确信每个关键点都指向一个计算结果为
true
的值。
array_fill_keys($ar, 1)