【发布时间】:2018-06-07 22:06:33
【问题描述】:
目前我正在对数组执行foreach,并在执行过程中创建一个新数组。例如:
$newMap = [];
foreach ($oldMap as $key => $value) {
// Apply some complex logic to $value to extract a string
$newString = my_value_processor($value);
$newkey = $key + $newString;
$newMap[$newKey] = $value;
}
我觉得我应该可以使用array_map() 或array_walk() 来完成这项工作,而且效率会更高,但我似乎无法让它发挥作用。
编辑:在上面的示例中,代码被简化以显示 $newKey 依赖于 $value。实际上,$value 是一个子数组,我对其应用了一些复杂的逻辑来提取字符串。我已经更新了上面的例子来证明这一点。
【问题讨论】:
-
IIRC,
foreach比array_函数快很多。让我找到一个来源来支持它。 EDIT 找到了我的来源:github.com/lizards-and-pumpkins/catalog/issues/528。这取决于具体的操作,但如果你没有函数式编程的背景,foreach 总是更快,甚至可能更容易阅读。 -
不,你不能改变现有 Php 数组中的键。
-
foreach ($old as $k => $v) $new[$k.'_'.$v] = $v;举个例子是不是很费劲? -
字符串不能使用
+操作符合并,使用.进行连接