0

假设,我有一个如下所示的数组:

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>

在这种情况下,键将与值匹配。

4

2 回答 2

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);

使用在初始数组中定义的混合大小写显示值作为值,但为键生成小写

于 2013-05-03T06:50:44.900 回答
2

不,没有。

问题仍然是你为什么想要它,但这是做到这一点的方法。

于 2013-05-03T06:47:38.230 回答