1
function myfunc ()
{
    $a['foo'] = 'bar';
    $a['baz'] = 'qux';

    return $a;
}

$a = myfunc();電話をかけたときに使用できecho $a->foo;、出力されるようにするにはどうすればよいですbarか?

追加の質問:上記の単純な関数がある場合、配列またはオブジェクトを返す方がよいでしょうか?

4

3 に答える 3

7

オブジェクトとしてキャストするだけです。

function myfunc ()
{
    $a['foo'] = 'bar';
    $a['baz'] = 'qux';

    return (object)$a;
}

どちらが欲しいかはあなた次第です。返されたオブジェクトまたは配列で何をしているかによって異なります。

于 2012-11-14T17:30:00.447 に答える
1

1-私はこのようにします:

function myfunc ()
{
    $a['foo'] = 'bar';
    $a['baz'] = 'qux';
    $array = new ArrayObject($a);
    return $array;
}

ArrayObjectは php バージョン 5 からサポートされています

2-配列またはオブジェクトを返すかどうかは実際には問題ではありません。それはあなたの決定です

于 2012-11-14T17:42:07.270 に答える
0

配列を返す場合は、メンバーに としてアクセスする必要があります$a['foo']。は->確かに oop 演算子です。これを使用するには、配列の代わりにオブジェクトを作成する必要がありますが、それは最初にクラスを定義する必要があることを意味します。これは、このようなオブジェクトのすべてのインスタンス化に対して2 つのメンバーfoobazが存在する必要があることを意味します。ですから、それはまったく別のことです。

于 2012-11-14T17:32:44.863 に答える