- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:listで変数代入)
listで変数代入の方法と注意点|データ行のデータ数をカウントして処理する方法はある?
このQ&Aのポイント
- list関数を使ってデータ行のデータ数に応じた変数代入を行うことができます。
- データ行のデータ数がわかっている場合は、list関数を使って変数に代入することができます。
- データ行のデータ数が不明な場合は、カウント関数を使ってデータ数を取得し、list関数を使って変数に代入することができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
まず、file関数で全行を配列としてロードしていて、全行に対して処理をするっていう前提があるのであれば、 forでループさせるより、foreachでループさせたほうが楽じゃないですかね。 <?php define(CSV_DATA, 'sample.csv'); $data = file(CSV_DATA); foreach($data as $r){ //処理 } ?> foreachなら上記のように、命名($rのこと)を短くできるので、yambejpさんがおっしゃるように、list使わないでそのまま書いたほうが早い気がします。 それでも、というのであれば、可変変数を使う感じですね。 <?php for($i=0; $i<count($data); $i++){ $j=1;foreach(explode(',', $data[$i]) as $val) ${sprintf('data_%02s', ++$j)} = $val; } ?> というようにすれば、$data_01、$data_02といった変数が自動的に表示されるようになったりしますが、 まぁ、面倒くさいですね。
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
回答No.1
>アンダーバー末尾数字みたいな方法 どうしてもというなら止めないが、汎用性も低いしやめた方が賢明 (アンダーバー+1からはじまる2桁だと結局99しかつくれないし) 普通に配列のまま処理した方がよいのでは? 変数でやるなら $xxx='yyy'; $$xxx='zzz'; print $yyy; 的な処理をいれることになりそうです
お礼
確かにForeachでループさせた方が楽ですよね!それでもということでコードまで書いて頂きましてありがとうございます。 いろいろと検証しながらやってみます。また何かあればよろしくお願いします。