[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 メーリングリストの案内