繁体   English   中英

是否有更好/优雅的方法将数组键设置为相关值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM