0
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)

出力print_r:

Array
(
    [1] => Array
        (
            [id] => 2
            [sid] => 35
            [material_completed] => 1
            [date] => 2017-12-18
        )

)

非常によく似た別の配列ウォークがあり、うまく機能しています。それらの間で私が認識することができる唯一の違いは、機能しているものです。値 $d は、ウォークを通過する前にすでに文字列ですが、機能していないものでは、 $d は内部で文字列に変換される配列です散歩(成功しましたが、最終的には失敗しました)。

私が行方不明の何か?

そして、ここに修正版があります:

array_walk($complete, function(&$d,$k) use($form) {
    $d = values($k, 'name').' ['.date('m/d/y',strtotime($d['date'])).'] ('.$form.')';
});

それがとにかくやろうとしていたことです。キーを変更しようとしていませんでした。値を変更するには、キーを新しい値に設定する必要があるという誤った印象を受けました。

4

1 に答える 1