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