関数で、例えば配列型を返す関数oshiete()があるとします。
これを個別の関数に割り当てる場合は以下のようになります。
list($var1, $var2, $var3) = oshiete();
あるいは
$vars = oshiete();
$var1 = $vars[0];
$var2 = $vars[1];
$var3 = $vars[2];
もし返ってくる配列中の値のうち、1つだけ取り出したい場合は以下のようになります。
$var1 = oshiete();
$var1 = $var1[0];
しかし、ここで2行書くのが無駄に思えて仕方がありません。
1行目の「$arr = 」に続けて、関数oshiete()の値を1つだけ取り出す方法って無いのでしょうか?「$arr = oshiete()[0];」のような書き方は駄目でした。
あと、もし2行で書く方法し無い場合、関数oshiete()が1つの値を取り出すことだけが目的で、かつそれ以降使うことが無い場合、配列を一旦変数$var1に入れて次にその変数に上書きする形で値を代入する方法は、メモリ消費量などの観点から見ると有用でしょうか?他で使わないなら別の変数名を容易するのは無駄に思えます。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
ご存知かもしれませんが,
最初の一つのみ取り出したいなら
$var_first = array_shift(oshiete());
最後の一つのみ取り出したいなら
$var_last = array_pop(oshiete());
のような方法があります。
他にもPHPには配列を操作する便利な関数がたくさんあるので目を通してみてください。
疑問に思ったのですが,本当に関数の戻り値は配列でなければいけないんでしょうか?
例えばoshiete()関数の引数に何番目の値が欲しいか渡し,引数が省略された場合は配列を返すようにすれば
$var1 = oshiete(1);
$vars = oshiete();
と言う感じに丸く収まりそうですけど。
参考URL:http://php.benscom.com/manual/ja/ref.array.php
No.1
- 回答日時:
以下の方法でどうでしょう?
参考URLもご確認ください
<?
function func()
{
return array(1, 2, 3);
}
//1番目のみ
list($a) = func();
print $a;
//2番目のみ
list(, $b) = func();
print $b;
//3番目のみ
list(, , $c) = func();
print $c;
?>
参考URL:http://jp.php.net/list
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 2つのシートの任意のセルの番号が一致したら、一致した行をコピーする VBA 2 2023/06/19 20:48
- Java Java 南京錠 2 2023/02/04 11:46
- Excel(エクセル) エクセルで書式設定とフィルタの組み合わせでうまく行かないのですが 4 2022/10/07 10:02
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Excel(エクセル) エクセルでエラーを無視して一番左側のセルの値を返したい 2 2023/07/27 13:06
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java Java モンスターブリーダー 1 2023/02/05 09:44
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列をループでたくさん宣言し...
-
PHPでドメイン検索?
-
PHPでJavaScriptの配列を読み取...
-
file_existsでファイル名の部分...
-
(PHP)入力されたテキストをデ...
-
配列どうしで同じ値があれば取...
-
php多次元配列のソート(usort...
-
SimpleXML関数で取得したXML要...
-
配列一致(要素順番は違うが内容...
-
タブ区切りのデータでnullのデ...
-
Smartyでtplファイルから配列を...
-
改行入り変数を改行を残したま...
-
3次元配列を2次元配列にする方...
-
PHPの$abc=$values["pqr"]["xyz...
-
smartyのsection内でloop番号を...
-
多次元配列のスマートな書き方
-
URL型の文字列からファイル名を...
-
C言語でCSVファイルの行数を読...
-
配列データのグループ別け
-
stream_get_contentsの代替関数
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列をループでたくさん宣言し...
-
foreachのなかで次のキーを参照...
-
$_SESSIONに二次元配列を使える...
-
String だと「 ByRef引数の型が...
-
file_existsでファイル名の部分...
-
postgresql関数をつかったレコ...
-
$_POSTを一括してサニタイズし...
-
PHPのカッコ[ ]の使い方について
-
配列一致(要素順番は違うが内容...
-
漢字のソートについて
-
ネストが深い時のforeachはどう...
-
○番目から○番目までの取り出し...
-
チェックボックスが複数選択で...
-
テーブルの行と列の入れ替えは可?
-
CSVデータのn番目だけの値を取...
-
PHPで配列をPOSTデータで送った...
-
PHP 配列の添字に変数は使えない?
-
正規表現
-
PHP 多次元配列変数のデータ受...
-
OCI で、SELECT結果行数を取得...
おすすめ情報