[PHP-users 35694] Re: 関数の戻り値を変数に格納せずに配列アクセスしたい

kobayashi kobayan.ml @ gmail.com
2012年 3月 21日 (水) 14:33:50 JST


小林です。
ご返答ありがとうございます。
> 変数代入の場合であればlist使う方法もあります。
>> function foo()
> {
> return array(10, 20);
> }
>> list($n) = foo();
> echo $n;
> // 10
>> list(, $n) = foo();
> echo $n;
> // 20
>> list($n, ) = foo();
> echo $;
> // 10
>> 関数から返る配列の先頭,末尾ならarray_shift,array_popも使えますね。

たしかに今回の例では list が使えますね。
ただ、欲を言うと以下のように引数に渡したりなどもしたかったです。
(後出しですみません...)
-------------------
function foo()
{
 return array(10, 20, 30, 40);
}
function foo2()
{
 $a = array();
 $a['a']['x'] = 10;
 $a['a']['y'] = 20;
 $a['b']['x'] = 30;
 return $a;
}
function bar($str)
{
 print "$str\n";
}
$a = foo();
bar(foo()[1]); // php 5.4.0 より前だとエラー
bar(foo2()['a']['y']); // php 5.4.0 より前だとエラー
-------------------
カッコの組み合わせとかで何とかならないかと思いましたが
それはどうも無理そうなので
無難に php 5.4.0 を導入(か、導入できない環境ではガマン)するのが
良いと思いました。
-- 
kobayashi <kobayan.ml @ gmail.com>


PHP-users メーリングリストの案内

AltStyle によって変換されたページ (->オリジナル) /