dポイントプレゼントキャンペーン実施中!

例えば、配列を返す関数、get_array がある時、
その配列の0番目の要素だけが欲しい時、
Perlでは、
$val = get_array[0];
(配列リファレンスを返す場合は、$val = get_array->[0]; )
みたいな感じで書けたと思いますが、
PHPでは、
$val = get_array()[0];
みたいに書けないですよね?

以下のように、二行で書かなければダメですか?
$array = get_array();
$val = $array[0];

A 回答 (2件)

本来配列を返すということは「配列を返すことが必要」だから


そういう仕様にしているわけです。
それを一部のデータしか必要がないということになると
最初からそのデータだけを返すユーザー関数の仕様にすればよいので。

<?PHP
function getArray($arg=null){
$array=Array('a','b','c');
if(is_null($arg)) return $array;
return $array[$arg];
}
print_r(getArray());
print getArray(0);
?>
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

> 最初からそのデータだけを返すユーザー関数の仕様にすればよいので。
了解しました。

この getArray 関数なら、配列全体が欲しい時も、その配列の一部が欲しい時も、呼び出し側は1行で書けますね。
なるほど、ありがとうございました。

お礼日時:2008/01/06 19:46

同様の質問があがっています。



http://oshiete1.goo.ne.jp/qa3611873.html

ちなみにキーが[0]と「0番目の要素」(順番が0=先頭)とは意味合いが
異なりますので区別された方がよいでしょう

この回答への補足

失礼しました。
ありがとうございます。まったく同様の質問でした。

ようするに、「Perlのようにはできない」ということになりますでしょうかね?

回答者 No.1 の
> //3番目のみ
> list(, , $c) = func();
の方法であれば、100番目の要素を抽出するのは大変面倒ですね。

つまりは、回答者 No.2 の
> 疑問に思ったのですが,本当に関数の戻り値は配列でなければいけないんでしょうか?
に行き着くということでしょうか?
スカラー値が欲しいのに、配列を受け取れば、メモリーも消費しますし・・・。

補足日時:2008/01/04 14:56
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!