このような配列をstartからendまで回して
$a = array(0 => '中村' 1800 => '佐藤', 1830 => '田中',1850=>'伊藤',2000=>'山田'); $start = 1780; $end = 2019;
↓の様に実行結果を表示させるという問題に詰まっています。
実行結果 1780番 中村1781個 1781番 中村1782個 ↓(略) 1798番 中村1799個 1799番 中村1800個 1800番 佐藤1個 1801番 佐藤2個 ↓(略) 1828番 佐藤29個 1829番 佐藤30個 1830番 田中1個 1831番 田中2個 ↓(略) 1848番 田中19個 1849番 田中20個 1850番 伊藤1個 1851番 伊藤2個 ↓(略) 1998番 伊藤149個 1999番 伊藤150個 2000番 山田1個 2001番 山田2個 ↓(略) 2017番 山田18個 2018番 山田19個
最初に書いたコードが↓ですが、
PHP
1<?php 2$gannen_nengou = array( 3 0 => "中村" 4 , 1800 => "佐藤" 5 , 1830 => "田中" 6 , 1850 => "伊藤" 7 , 2000 => "山田" 8 ); 9$start = 1780; 10$end = 2019; 11 12$nakamura = array(); 13$sato = array(); 14$tanaka = array(); 15$ito = array(); 16$yamada = array(); 17 18 19 for($i=$start; $i <=$end; $i++){ 20 if($i < 1800){ 21 $nakamura[] = $i.'番 '.$gannen_nengou[0].($i + 1).'個</br>'; 22 }else if(1800 <= $i && $i < 1830){ 23 $sato[] = $i.'番 '.$gannen_nengou[1800].($i - 1799).'個</br>'; 24 }else if(1830 <= $i && $i < 1850){ 25 $tanaka[] = $i.'番 '.$gannen_nengou[1830].($i - 1829).'個</br>'; 26 }else if(1850 <= $i && $i < 2000){ 27 $ito[] = $i.'番 '.$gannen_nengou[1850].($i - 1849).'個</br>'; 28 }else if(2000 <= $i && $i <= $end){ 29 $yamada[] = $i.'番 '.$gannen_nengou[2000].($i - 1999).'個</br>'; 30 } 31 } 32 33$names = array($nakamura,$sato,$tanaka,$ito,$yamada); 34foreach ($names as $name) { 35 foreach ($name as $name_name) { 36 print $name_name.'</br>'; 37 } 38} 39?>
この様な書き方だと配列に新たなキーと値(キー:2010,値:石川)を追加した時に、for文の中も書き換えなければいけなく効率が悪い為、新たなキーと値を入れるだけで
2000番 山田1個 2001番 山田2個 ↓(略) 2009番 山田10個 2010番 石川1個 2011番 石川2個 ↓(略) ※修正 2019番 石川10個
の様に出力されるように、考えています。
~~しかし上手く出来ず、最初のキーが0な事が引っ掛かりそこを考えてコードを書くとその後がおかしくなったりと、頭の中で整理ができなくなっています。最初のキーと値は別として考えるのかな、とも思っているのですが・・・。
~~
どうコードを書けばいいか教えて頂けると助かります。
よろしくお願いしたします。
回答1件
あなたの回答
tips
プレビュー