初めまして、PHP初心者です。whileについての質問です
whileでループ中に指定する数ごとに区切りつけたいと思っています。最初は5回目、残りは6回毎に区切る方法はありますか?
$food_image[] = a:
$food_image[] = b:
$food_image[] = c:
$food_image[] = d:
$food_image[] = e:
$food_image[] = f:
$food_image[] = g:
...配列は50個くらいまで続きます…
$food_count = count($food_image);
$i = 1;
while( $i <= $food_count ){
$pdf->Text($x, $y, sjis_conv("$food_image[$i] "));
$i++;
}
どうぞよろしくお願いします
No.4
- 回答日時:
配列を整理するというと一度次のような2次元配列に変換してしまう方法もあります。
そこから2重ループで好きに処理すれば良いわけです。
$result = array(
array(a,b,c,d,e), // 5件
array(f,g,h,i,j,k), // 6件
array(l,n,m,o,p,q), // 6件
…
);
<?php
$data = array();
for($i=1; $i<=50; $i++) {
$data[] = "ダミーデータ{$i}";
}
$top5 = array_splice($data, 0, 5); // 先頭5件を切り出す
$result = array_chunk($data, 6); // 残りを6件ずつに分割(2次元配列)
array_unshift($result, $top5); // 先頭に挿入
print_r($result);
>PHP初歩のときは配列の扱いをしっかりやることと
>教えてもらいました
上記のように配列関数(array_*)に慣れると便利です。
No.3
- 回答日時:
今回の件は$food_imageのキーが0から始まる整数であることが
自明ですが、配列の場合必ずしもそうであるわけではありません。
whileでカウンタをインクリメントする場合は、条件を合わせるために
array_keys()やarray_values()で一度配列を整理した方がよいでしょう。
すでに回答はでているとおりforeachでやるのが賢明だという
前提で、もしwhileでやるならこんな感じ
<?
$food_image= Array("a"=>"x","b"=>"y","c"=>"z");
$food_values = array_values($food_image);
$i = 0;
while( true ){
if(isset($food_values[$i])===false) break;
print $food_values[$i];
$i++;
}
?>
どうもありがとうございます
PHP初歩のときは配列の扱いをしっかりやることと
教えてもらいました、
配列を整理するということが大事なんですね。
No.1ベストアンサー
- 回答日時:
んーー、とりあえず、while である必要はないと思われるのですが、
while のほうがお好みですか?
実行してないので どこかで軽くエラーとか出るかもしれませんが、以下のような感じでいかがでしょうか?
$limit = 5;
foreach($food_image as $i => $dat) {
$limit--;
$pdf->Text($x, $y, sjis_conv("$dat"));
if ($limit == 0) {
// ここに区切りを入れる処理を書いてください。
$limit = 6;
}
}
bm_hiro様
早速のご回答ありがとうございます。
試したところ、解決できました。
助かりました。
whileでできると思って、3日くらい思案しておりましたが
そもそもが間違いだったのですね。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 英語得意な方お願いします!! 5 2022/05/12 14:20
- TOEFL・TOEIC・英語検定 英語 文法 1 2023/02/27 14:01
- 英語 I give the cat some food.が誤りな理由について 4 2023/02/26 23:11
- PHP 'member_picture/'に/がありますが 、「スラッシュ」は必要でしょうか? 1 2022/11/27 04:32
- 英語 Foodは可算か不可算名詞か。 Only 〇〇 food has been prepared for 1 2022/05/25 14:44
- 英語 If you reach for food to relive stress or to remov 2 2022/05/15 13:55
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- 英語 enough 名詞 to do 2 2023/08/09 22:50
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP 掲示板を資料を参考にして開発中ですが、画像がアップされません? 1 2022/11/21 06:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPのカッコ[ ]の使い方について
-
$_SESSIONに二次元配列を使える...
-
postgresql関数をつかったレコ...
-
foreachのなかで次のキーを参照...
-
ファイルから指定行数分だけ読...
-
PHPで配列をPOSTデータで送った...
-
String だと「 ByRef引数の型が...
-
PHP 配列の添字に変数は使えない?
-
file_existsでファイル名の部分...
-
fgetsで取り込んだ文字をexplod...
-
PHP 多次元配列変数のデータ受...
-
配列を回すとき、最後の要素だ...
-
PHPプログラミング スペースで...
-
phpで、連想配列を普通の配列に...
-
ネストが深い時のforeachはどう...
-
CakePHPのfindの取得件数は?
-
配列のランク付け
-
エラーの原因について
-
PHPでこのコード自体に意味は無...
-
別ファイルの構造体の値を読み...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列をループでたくさん宣言し...
-
file_existsでファイル名の部分...
-
$_SESSIONに二次元配列を使える...
-
foreachのなかで次のキーを参照...
-
String だと「 ByRef引数の型が...
-
配列を回すとき、最後の要素だ...
-
配列一致(要素順番は違うが内容...
-
PHPのカッコ[ ]の使い方について
-
ネストが深い時のforeachはどう...
-
チェックボックス複数選択 mys...
-
PHPで配列をPOSTデータで送った...
-
phpで、連想配列を普通の配列に...
-
PHP 多次元配列変数のデータ受...
-
postgresql関数をつかったレコ...
-
【PHP】配列内のある値以上をカ...
-
SQL文の実行結果を変数で受けて...
-
プルダウンメニューでCSVデータ...
-
Smartyのテンプレートからjavas...
-
PHPにてクラスを配列にすること...
-
CSVデータのn番目だけの値を取...
おすすめ情報