アプリケーションに奇妙なものを見つけました。
再現可能なサンプルを共有できないため、私の問題を説明するのは難しいでしょう.
主な問題は、array_walk 関数の 3 番目のパラメーターについてです。
$row = array("user_id" => 1, "first_name" => "bobby");
$data = array("user_id" => "fc_name", "first_name" => "fc2_name", "email" => "fc3_name");
$res = array_walk( $row, 'fu', $aParams);
function fu(&$cell, $key, $data) {
return call_user_func_array($data[$cell], array($cell, $key, $data));
}
スクリプトを実行すると、エラーなしで中止されました。デバッグ後、 $data が変更され、再帰配列になることがわかりました。
Array
*RECURSION*
私が理解できないのは、コピーで渡されている間に $data を変更する方法です。実行に関するすべての情報を持っているわけではなく、call_user_func_array には他にも多くの呼び出しがあることはわかっています。
ありがとう
PS: Xdebug を使用してすべてのトレースをログに記録しましたが、奇妙なものは見つかりません。
UPDATE1 : foreach ループで array_walk を変換しても問題ありません
UPDATE2 : Update1 により、問題が純粋な PHP コードではないことを理解できました。その理由は、「スタック オーバー フロー」(本当の :)) またはセグメント エラーを探していたからです。そして、公式のphpバグレポートhttps://bugs.php.net/bug.php?id=61730でこのバグを発見し、私のphpバージョンは修正されていません(5.3.2)私は自分のarray.cをチェックしました。シナリオは私のものに近いので、できるときにphpを更新します(エンタープライズプロセス...)。
私はこの修正の多くを期待しています。