php - PHP如何组合数组并创建新数组
问题描述
我有 3 个这样的数组:
$first = array(
[0] => 13
[1] => 66
[2] => 15
)
$second = array
(
[0] => append
[1] => prepend
[2] => append
)
$third = array
(
[0] => 2
[1] => 4
[2] => 1
)
现在我想组合这 3 个数组并像这样创建新的SINGLE数组:我想从每个数组中获取值并将其组合成一个。
$new_array = array(
[0] = array (
'page'=>13,
'position'=>'append'
'priority'=>'2'
)
[1] = array (
'page'=>66,
'position'=>'prepend'
'priority'=>'4'
)
[2] = array (
'page'=>15,
'position'=>'append'
'priority'=>'1'
)
)
这该怎么做 ?
解决方案
您可以使用array_map()遍历多个数组(长度相同)并从它们中逐项构建一个新数组:
$first = array(13, 66, 15);
$second = array('append', 'prepend', 'append');
$third = array(2, 4, 1);
print_r(
array_map(
function($page, $position, $priority) {
return compact('page', 'position', 'priority');
},
$first,
$second,
$third
)
);
尽管在这种情况下,结构简单的 foreach() 可能是另一种选择。
编辑:版本 2。有些人可能会认为这更糟,因为可读性和代码可维护性。感谢 AbraCadaver
$keys = ['page', 'position', 'priority'];
// Note: The order in $keys and array_map() arguments must be the same
// On the other hand you only need to type the keys once and it's easy
// to change the number of arguments :)
print_r(
array_map(
function(...$args) use ($keys) {
return array_combine($keys, $args);
},
$first,
$second,
$third
)
);
编辑:版本 3。使用更现代的 PHP (7.4) 和箭头函数:
print_r(
array_map(
fn(...$args) => array_combine($keys, $args),
$first,
$second,
$third
)
);
推荐阅读
- movesense - Movesense、imu 数据的时间戳来源以及一般的时序问题
- apache - 是否可以使用 hbase2 构建和使用 apache kylin
- python - 如何使用 python 代码将 UUID 分配给文件 (.mydsl)
- android - 如何从另一个班级的 timePicker 获取时间?
- asp.net - 如何更改电子邮件状态google api c#
- yii2 - Yii2 - 如何在日志消息中设置时间?
- elasticsearch - 弹性搜索没有为 1 个字段搜索提供正确的结果
- reactjs - Gatsby with Apollo 在查询中未定义时给出错误作为客户端
- shell - 在 C Shell 中执行时获取脚本路径
- typescript - 为什么直接类型转换在 Typescript 中不起作用