让我们说,我有一个看起来像这样的数组:
Array
(
[0] => red
[1] => green
[2] => blue
)
我希望此数组的键与相关值相同。所以结果应该是这样的:
Array
(
[red] => red
[green] => green
[blue] => blue
)
初始数组的值将是唯一的,因此这不是问题。
要获得结果,我通常会使用foreach循环:
$aResult = array();
foreach($aColors as $sValue)
{
$aResult[$sValue] = $sValue;
}
我的问题是:有更好/更优雅的方法吗?
修改 很多人都想知道为什么我需要这样的数组。所以我会解释一下。我正在使用一个框架,它为我生成一个选择框。该函数使用数组键和值将它们应用于选择选项,如下所示:
<select>
<option value="red">red</option>
<option value="green">green</option>
<option value="blue">blue</option>
</select>
在这种情况下,键会匹配值。
答案 0 :(得分:4)
$aResult = array_combine($aColours, $aColours);
但这样做毫无意义,因为它没有给你原始阵列没有给你的任何东西。
修改强>
您可能还会发现以下变体很有用:
$aColours = array('red','orange','yellow','green','blue','indigo','violet');
$aResult = array_combine(
$aColours,
array_map(
'ucfirst',
$aColours
)
);
var_dump($aResult);
使用初始数组中为键定义的小写值,但为显示值生成大写的第一个字母
$aColours = array('Red','Orange','Yellow','Green','Blue','Indigo','Violet');
$aResult = array_combine(
array_map(
'strtolower',
$aColours
),
$aColours
);
var_dump($aResult);
使用初始数组中为值定义的混合大小写显示值,但为键生成小写
答案 1 :(得分:2)
不,没有。
问题仍然是你想要它的原因,但这是实现它的方法。