[英]Is there a better/elegant way of setting array keys to related values?
假设我有一个看起来像这样的数组:
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>
在这种情况下,键将与值匹配。
$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);
使用在初始数组中定义的大小写混合的显示值作为值,但生成键的小写形式
不,没有。
问题仍然是您为什么想要它,但这是做到这一点的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.