function values($id,$col)
{
$vals = [1=>['name'=>'Lifting Heavy Boxes']];
return $vals[$id][$col];
}
$complete = [1=>["id"=>"2","sid"=>"35","material_completed"=>"1","date"=>"2017-12-18"]];
$form = 'my_form';
array_walk($complete, function(&$d,$k) use($form) {
$k = values($k, 'name').' ['.date('m/d/y',strtotime($d['date'])).'] ('.$form.')';
echo 'in walk '.$k."\n";
});
print_r($complete);
输出:
echo
输出:
in walk Lifting Heavy Boxes [12/18/17] (my_form)
我还有另一个非常相似的阵列步行,这很好。我可以感知到的唯一区别在于有效的一个,值$ d已经是一个字符串,在步行之前已经是一个字符串,而在不起作用的符号中,$ d是一个数组,它在内部转换为字符串步行(成功但最终未成功)。 我想念的东西吗?
这是固定版本:
print_r
那是我试图做的。我不是在更改钥匙。我的印象是,要改变您必须为新值设置钥匙的价值。
您无法更改
Array
(
[1] => Array
(
[id] => 2
[sid] => 35
[material_completed] => 1
[date] => 2017-12-18
)
)
的值;它的结构无法更改,即程序员无法添加,删除或重新排序元素。如果回调不尊重此要求,则此功能的行为是不确定的,并且无法预测。在第一个评论中也提到了这一点:
Array_walk不能用来更改数组中的键,这是什么值得的。 该函数可以定义为(&$ value,$键),但不是(&$ value,&$ key)。 即使PHP不抱怨/警告,也不会修改钥匙。