11

いくつかの理由で、私たちのホスティング会社はPHP 5.2を使用しており、mysqliとPDOもプリインストールされていません。

コードの一部を書き直して5.2互換にするしかない。

だから、ここに私の質問があります:

PHP 5.2では無名関数がサポートされていないため、コードを正しく変更していることを確認するために次のテストを実行しました。

class foo{

    public function toString(){
        $arr = array("a", "b");
        $arr2 = array("c", "d");
        print_r(array_map('mapKeyValue', $arr, $arr2));
    }

    private function mapKeyValue($v, $k){
        return $k."='".$v."'";
    }
}

$foo = new foo();
echo $foo->toString();

しかし、上記は私に与えるでしょう:

Warning: array_map() expects parameter 1 to be a valid callback, function 'mapKeyValue' not found or invalid function name in ....
PHP Warning: array_map() expects parameter 1 to be a valid callback, function 'mapKeyValue' not found or invalid function name in ....

正しい方法は何ですか:

array_map('mapKeyValue', $arr, $arr2);

クラス内?

PS:ホスティング会社はPHP 5.2を使用しているので、変更するのに十分な理由ですか?(残り約7か月の契約を結んでいます)

4

4 に答える 4

19

$thisコールバックとして配列を使用します。

array_map( array( $this, 'mapKeyValue'), $arr, $arr2);

そして、念のために言っておきますが、これはPHP 5.2.17でテストされ、動作することが確認されています。

于 2012-08-29T13:53:03.387 に答える
4

使ってみてください:

print_r(array_map(array($this, "mapKeyValue") , $arr, $arr2));

$this を使用して関数を呼び出す必要があります。

于 2012-08-29T13:59:03.140 に答える
0
array_map(array($this, 'mapKeyValue'), $arr, $arr2);
于 2012-08-29T13:53:15.343 に答える