PHP
1<?php 2$selectBox = "<select>"; 3$arr = array("2","0","1","6","2","0","1","6","2","0","1","7","2","0","1","7","2","0","1","7"); 4$temp_arr = array_chunk($arr,4); 5for ($i=0; $i < count($temp_arr); $i++) { 6 for ($j=0; $j < 4; $j++) { 7 $temp = $temp_arr[$i][$j]; 8 $selectBox .= "<option>".$temp_arr[$i][$j]."</option>"; 9 } 10} 11echo $selectBox; 12?>
【問題】
上記のソースで、array_chunkを使って配列を分割させたつもりで、分割ができてません。
![
最終的には以下のように、分割がうまくできるようにしたいです。
【質問】
上の画像のようにうまく分割りできるようにしたいです。わかる方、ご教授お願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答7件
0
$temp_arr
に分割自体はされていますが、二重ループで1つずつ回してしまっているので、結局は1つずつ処理されてしまいます。implode
でつないで1つの文字列にしましょう。
php
1$selectBox = "<select>"; 2$arr = array("2","0","1","6","2","0","1","6","2","0","1","7","2","0","1","7","2","0","1","7"); 3$temp_arr = array_chunk($arr,4); 4for ($i=0; $i < count($temp_arr); $i++) { 5 $selectBox .= "<option>".implode('', $temp_arr[$i])."</option>"; 6} 7$selectBox .= '</select>'; 8echo $selectBox;
</select>
の抜けについては修正しましたが、<option>
にvalue
がない件については正しい値がわからないのでそのままにしています。
投稿2016/06/20 06:01
総合スコア145121
0
みなさん出てますが、別の方法をば。
PHP
1<?php 2$selectBox = "<select>\n"; 3$arr = array("2","0","1","6","2","0","1","6","2","0","1","7","2","0","1","7","2","0","1","7"); 4$str = implode('',$arr); 5$str = wordwrap($str,4,'/',true); 6$temp_arr = explode('/', $str); 7 8for ($i=0; $i < count($temp_arr); $i++) { 9 $selectBox .= "<option>".$temp_arr[$i]."</option>\n"; 10} 11echo $selectBox; 12echo "</select>\n"; 13```全部くっつけて、4桁で割って、配列を作り直しています。
投稿2016/06/20 06:06
総合スコア4437
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
php
1<?php 2$selectBox = "<select>"; 3$arr = array("2","0","1","6","2","0","1","6","2","0","1","7","2","0","1","7","2","0","1","7"); 4foreach (str_split(implode('', $arr), 4) as $element) { 5 $selectBox .= "<option>" . $element . "</option>"; 6} 7echo $selectBox . "</select>";
投稿2016/06/20 06:00
総合スコア4791
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/06/20 07:15
0
ベストアンサー
implode()を使いましょう。
PHP
1<?php 2$selectBox = "<select>"; 3$arr = array("2","0","1","6","2","0","1","6","2","0","1","7","2","0","1","7","2","0","1","7"); 4$temp_arr = array_chunk($arr,4); 5for ($i=0; $i < count($temp_arr); $i++) { 6 $temp = implode($temp_arr[$i]); 7 $selectBox .= "<option>".$temp."</option>"; 8} 9echo $selectBox; 10?>
投稿2016/06/20 06:00
総合スコア6621
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/06/20 06:13
退会済みユーザー
2016/06/20 06:15 編集
0
PHP
1<?php 2$selectBox = "<select>"; 3$arr = array("2","0","1","6","2","0","1","6","2","0","1","7","2","0","1","7","2","0","1","7"); 4$temp_arr = array_chunk($arr,4); 5for ($i=0; $i < count($temp_arr); $i++) { 6 $temp = implode($temp_arr[$i]); 7 $selectBox .= "<option>".$temp."</option>"; 8} 9echo $selectBox; 10?>
投稿2016/06/20 06:02
総合スコア16996
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/06/20 07:20
0
php
1for ($i=0; $i < count($temp_arr); $i++) { 2 $selectBox .= "<option>".implode('',$temp_arr[$i])."</option>"; 3}
未検証ですがこんな感じかと・・・
または質問文のコードに沿ってやるなら下記でしょうか
php
1for ($i=0; $i < count($temp_arr); $i++) { 2 $tmp = ''; 3 for ($j=0; $j < 4; $j++) { 4 $tmp .= $temp_arr[$i][$j]; 5 } 6 $selectBox .= "<option>".$tmp ."</option>"; 7}
投稿2016/06/20 06:02
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/06/20 07:18
0
分割するところまではいいですが、結局分割させた配列も1文字ずつ突っ込んでしまっているからでしょうね。
下記のような感じでしょうか。
<?php $selectBox = "<select>"; $arr = array("2","0","1","6","2","0","1","6","2","0","1","7","2","0","1","7","2","0","1","7"); $temp_arr = array_chunk($arr,4); foreach ($temp_arr as $arr) { $year = null; foreach ($arr as $num) { $year .= $num; } $selectBox .= "<option>".$year."</option>"; } echo $selectBox;
投稿2016/06/20 06:00
総合スコア121
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/06/20 07:17