0

メソッドで配列を返すのに苦労してい__toStringます。

これが私のコードです。

public function __toString()
{
    $this->_libraries();
    $this->_sysConfig();

    //print_r($this->version);
    $version = implode("\n", $this->version);
    echo $version;
    return 'echo';//$version;
}

私はそれで遊んでいますが、私が何をしているのかまだこのエラーが発生します

Notice: Array to string conversion in (...)

配列を返すことはできませんか?

これは私が内破しようとしている配列です

Array
(
    [0] => Array
        (
            [version] => Array
                (
                    [item] => Array
                        (
                            [0] => Array
                                (
                                    [name] => cms
                                    [version] => 1.0
                                )

                            [1] => Array
                                (
                                    [name] => TinyMCE Jquery Package
                                    [version] => 3.5
                                )

                            [2] => Array
                                (
                                    [name] => Jquery
                                    [version] => 1.7.2
                                )

                        )

                )

        )

)
4

2 に答える 2

2

なぜ戻り値をエコーし​​てからPHP構造を返すのですか?

変数を返すだけです。

return $version;

アップデート

多次元配列を内破することはできないと確信しています。これを機能させるには、カスタムコールバックを作成し、array_walkを呼び出す必要があります。

于 2012-05-04T16:38:55.033 に答える
1

implode多次元配列では使用できません

$version = Array (
        0 => Array (
                'version' => Array (
                        'item' => Array (
                                0 => Array (
                                        'name' => 'cms',
                                        'version' => '1.0' 
                                ),

                                1 => Array (
                                        'name' => 'TinyMCE Jquery Package',
                                        'version' => '3.5' 
                                ),

                                2 => Array (
                                        'name' => 'Jquery',
                                        'version' => '1.7.2' 
                                ) 
                        ) 
                )

        )

);

$version = implode ( $version, "\n" );

出力

  Notice: Array to string conversion in xxxx

デモ1

 $version = multi_implode ( $version, "," );

出力

 cms1.0 , TinyMCE Jquery Package3.5 , Jquery1.7.2

デモ2

 $version = multi_implode ( $version, " , " ," = " );

出力

 cms = 1.0 , TinyMCE Jquery Package = 3.5 , Jquery = 1.7.2

使用した機能

function multi_implode($pieces, $glue, $glue2 = null) {
    foreach ( $pieces as $piece ) {
        if (is_array ( $piece )) {
            $retVal [] = multi_implode ( $piece, $glue, $glue2 );
        } else {
            if ($glue2 == null) {
                $retVal [] = $piece;
            } else {
                $retVal [] = implode ( $glue2, $pieces );
                break;
            }
        }
    }
    return implode ( $glue, $retVal );
}
于 2012-05-04T16:53:19.547 に答える