将数组[fields => values]转换为[fields,values]
如果我有一个这样的数组:
[
field1 => value1,
field2 => value2,
field3 => value3
];
我想把它转换成这样的数组:
[
[field1, field2, field3],
[value1, value2, value3]
];
现在我只是把键和值放在另一个数组中:
[
array_keys($array),
array_values($array)
];
有没有更优雅的方式来做到这一点?
1条答案
按热度按时间hmae6n7t1#
在考虑“优雅”之前,首先考虑输出一致性。如果你总是想创建一个有两个第一级元素的数组,你的方法是合适的。
然而,如果你想要一个空的输出数组,当你的输入数组是空的,你需要一个不同的方法,结果数组只在必要的时候加深,比如...
代码:(Demo)
如果你总是想要一个两个元素的结果,无体循环可以以一种简洁的方式避免任何函数调用。(Demo)
使用
array_reduce()
进行函数式编程可能会变得丑陋/冗长。(Demo)如果你考虑使用
array_walk()
,它的工作方式就像foreach()
一样,因为它不会将结果有效负载作为返回值传递。如果你认为函数式编程是优雅的,请记住,当输入数组中只有一个或更少的元素时,
array-map()
调用的双转置将不起作用。Proof