我正在寻找一个漂亮的PHP解决方案来取代标准的forloop。我根本不关心我的规范化方法的内部工作原理。
这是我的代码:
$pairs=[];
foreach($items as $key => $val){
$key = $this->normalizeKey($key);
$pairs[$key] = $val;
}
private function normalizeKey($key)
{
// lowercase string
$key = strtolower($key);
// return normalized key
return $key;
}
我想更好地学习PHP语言。我认为array_walk
会很好用,但是它会对值而不是键进行操作。
我正在寻找可以执行此代码而不是foreach
循环的PHP数组方法。
答案 0 :(得分:7)
$pairs = array_change_key_case($items);
答案 1 :(得分:0)
只是为了好玩,虽然它需要三个功能。您可以将strtolower()
替换为array_change_key_case()
:
$pairs = array_combine(array_map('strtolower', array_keys($items)), $items);
$items
strtolower()
$items
值如果您需要更复杂的东西,也可以使用匿名函数作为回调。这会将-something
附加到每个密钥:
$pairs = array_combine(array_map(function ($v) {
return $v . '-something';
},
array_keys($items)), $items);
答案 2 :(得分:-1)
使用引用,您可以使用array_walk
实现相同的目标。
像这样:
array_walk(array_keys($a), function ($k) use (&$items) {
$value = $items[$k];
unset($items[$k]);
$items[$this->normalizeKey($k)] = $value;
});
您可以将其应用于foreach