PHP数组实例化时,能否用简写为多个元素设置相同值?
一行内生成多键同值的PHP数组方法
需要构造一个包含starta、startb、enda、endb四个键的PHP数组,要求starta和startb的值为$updater['kickoff'],enda和endb的值为$updater['finished']。需要在外部函数的数组实例化参数中一行完成,尝试了几种简写写法都触发语法错误,询问是否有可行的简写方式。
尝试过的错误写法
$array = ['starta', 'startb' => $updater['kickoff'], 'enda', 'endb' => $updater['finished'] ]; $array = ['starta' = 'startb' => $updater['kickoff'], 'enda' = 'endb' => $updater['finished'] ]; $array = ['starta' => 'startb' => $updater['kickoff'], 'enda' => 'endb' => $updater['finished'] ];
期望的数组结构
array( 'starta' => $updater['kickoff'], 'startb' => $updater['kickoff'], 'enda' => $updater['finished'], 'endb' => $updater['finished'] );
可行的实现方式
PHP本身没有原生的多键同值数组简写语法,但可以通过以下几种方式在一行内完成需求:
直接显式声明:最稳妥直观的写法,虽然重复了值,但语法简单无歧义,不会触发错误:
$array = ['starta' => $updater['kickoff'], 'startb' => $updater['kickoff'], 'enda' => $updater['finished'], 'endb' => $updater['finished']];array_merge结合array_fill_keys:适合同值键数量较多的场景,通过array_fill_keys批量生成同值键值对,再合并成最终数组:$array = array_merge(array_fill_keys(['starta', 'startb'], $updater['kickoff']), array_fill_keys(['enda', 'endb'], $updater['finished']));解构赋值(PHP 7.1+):利用数组解构语法简化合并操作,代码更紧凑:
$array = [...array_fill_keys(['starta', 'startb'], $updater['kickoff']), ...array_fill_keys(['enda', 'endb'], $updater['finished'])];
内容的提问来源于stack exchange,提问作者Mm-Art-In
相关产品推荐
相关产品推荐

