0

データベースに挿入するために、配列kayからアンダースコアを取り除き、スペースに置き換える関数があります。

テストサーバーで実行すると正常に実行されますが、ライブでは22行目に構文エラーが報告されます。「)」が必要です。

関数は次のとおりです。

function fixArrayKey(&$arr)
{
    $arr=array_combine(array_map(function($str){return str_replace("_"," ",$str);},array_keys($arr)),array_values($arr));
    foreach($arr as $key=>$val)
    {
        if(is_array($val)) fixArrayKey($arr[$key]);
    }
}

22行目は、$ arr=array_combineが始まる場所です。

私の人生では、どこで問題が発生したのか、ローカルサーバーでは機能するのにライブサーバーでは機能しない理由を理解することさえできません。

私のライブサーバーはIIS7サーバーですが、それはそれと関係がありますか?

4

1 に答える 1

1

少し単純にすると、エラーがどこにあるかがわかるかもしれません。

function fixArrayKey(&$arr)
{
    $keys   = array_keys($arr));
    $values = array_values($arr);

    // Try without the lambda function
    $map = array_map('lambda_replace', $keys);

    // Or you can uncoment the line below (and comment the one above) to use
    // the lambda function
    //$map = array_map(function($str){return str_replace("_"," ",$str);}, $keys);

    $arr = array_combine($map, $values);

    foreach ($arr as $key=>$val)
    {
        if(is_array($val)) fixArrayKey($arr[$key]);
    } 
}

function lambda_replace($str)
{
    return str_replace('_', ' ', $str);
}

phpinfo()開発環境と本番環境の両方で、それらの違いを特定することをお勧めします。たとえば、PHPのモジュールはバージョンによって動作が異なり、PHP自体にもバージョンごとに異なる機能があります。

于 2012-12-19T15:10:35.487 に答える