【发布时间】:2019-08-28 01:41:22
【问题描述】:
我不确定该标题的措辞是否完全正确,但我的 IDE (PHPStorm) 就是这样描述它的。
使用 splat 运算符,我想获取一个如下所示的数组:
array(
array(
'label' => 'Some label',
'value' => 'some-value'
)
)
并将其转换成如下所示:
array(
'some-value' => 'Some label'
)
我不熟悉在 PHP 中使用“splat 运算符”,我想知道为什么这段代码被认为是无效的:
$key = ...array_map( function( $el ) {
return array(
$el['value'] => $el['label']
);
}, array(
array(
'label' => 'Some label',
'value' => 'some-value'
)
) );
但这段代码工作正常,达到了我的目标,但array_merge 完全没有意义:
$key = array_merge( array(), ...array_map( function( $el ) {
return array(
$el['value'] => $el['label']
);
}, array(
array(
'label' => 'Some label',
'value' => 'some-value'
)
) ) );
用括号括起来似乎没有帮助。这不是 splat 操作员至少部分打算做的吗?不得不通过一个多余的函数来使其工作似乎是一种耻辱。
是否有另一个我不知道的 PHP 函数在没有冗余的情况下做同样的事情?
【问题讨论】:
-
array_combine(array_column($array, 'value'), array_column($array, 'label'));会达到同样的效果吗? -
确实有效,谢谢。我想这会一直持续到传播运算符出现(无论如何对于这个特定的用例)
标签: php