質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

976閲覧

配列の中の特定の値を繰り返し表示させたい

MeB

総合スコア104

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2018/08/03 08:18

編集2018/08/03 08:55

前提・実現したいこと

配列の中身を配列文だけ繰り返し表示し、htmlを生成したいです。

該当のソースコード

php

1<?php 2print_r($data); 3?> 4//print_r()して表示される配列 5Array 6( 7 [0] => Array 8 ( 9 [id] => 1 10 [color] => 赤 11 [type] => a 12 ) 13 14 [1] => Array 15 ( 16 [id] => 2 17 [color] => 赤 18 [type] => b 19 ) 20 21 [2] => Array 22 ( 23 [id] => 3 24 [color] => 青 25 [type] => b 26 ) 27 28 [3] => Array 29 ( 30 [id] => 4 31 [color] => 青 32 [type] => c 33 ) 34 35 [4] => Array 36 ( 37 [id] => 5 38 [color] => 緑 39 [type] => c 40 ) 41 42) 43//下記のhtmlを配列の数分繰り返し生成したい(上記でいうと5回) 44<div> 45 <p>色:[ここに配列のcolorを入れたい]</p> 46 <p>タイプ:[ここに配列のtypeを入れたい]</p> 47</div>

試したこと

<?php echo $data['color']; ?>

などとやってみたのですが
Notice: Undefined...
と表示されてしまいます。
ほかにも調べて見たのですが、
値を全表示する方法ばかりでhtmlの特定を場所にテキストとして表示させる方法が見つからなかったため質問させていただきました。

ご教示のほど宜しくお願いします。

追記
最終的なhtmlは配列が3つだった場合

htlm

1<div> 2 <p>色:[ここに配列のcolorを入れたい]</p> 3 <p>タイプ:[ここに配列のtypeを入れたい]</p> 4</div> 5<div> 6 <p>色:[ここに配列のcolorを入れたい]</p> 7 <p>タイプ:[ここに配列のtypeを入れたい]</p> 8</div> 9<div> 10 <p>色:[ここに配列のcolorを入れたい]</p> 11 <p>タイプ:[ここに配列のtypeを入れたい]</p> 12</div>

のように<div>とその中自体が繰り返されるようにしたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

こういうことですか?

PHP

1<?PHP 2$a=[ 3 ["id"=>1,"color"=>"赤","type"=>"a"], 4 ["id"=>2,"color"=>"赤","type"=>"b"], 5 ["id"=>3,"color"=>"青","type"=>"b"], 6 ["id"=>4,"color"=>"青","type"=>"c"], 7 ["id"=>5,"color"=>"緑","type"=>"c"], 8 ]; 9$colors=implode(",",array_map(function($a){return $a["color"];},$a)); 10$types=implode(",",array_map(function($a){return $a["type"];},$a)); 11print <<<eof 12<div> 13<p>色:[{$colors}]</p> 14<p>タイプ:[{$types}]</p> 15</div> 16eof; 17?>

変更

仕様が違いましたね

PHP

1<?PHP 2$a=[ 3 ["id"=>1,"color"=>"赤","type"=>"a"], 4 ["id"=>2,"color"=>"赤","type"=>"b"], 5 ["id"=>3,"color"=>"青","type"=>"b"], 6 ["id"=>4,"color"=>"青","type"=>"c"], 7 ["id"=>5,"color"=>"緑","type"=>"c"], 8 ]; 9array_walk($a,function($x){ 10print <<<eof 11<div> 12<p>色:[{$x["color"]}]</p> 13<p>タイプ:[{$x["type"]}]</p> 14</div> 15eof; 16}); 17?>

投稿2018/08/03 08:34

編集2018/08/03 08:55
yambejp

総合スコア114839

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MeB

2018/08/03 08:52

ご回答ありがとうございます。 繰り返し表示されたいのは <div> <p>色:[ここに配列のcolorを入れたい]</p> <p>タイプ:[ここに配列のtypeを入れたい]</p> </div> ここ全てになります。なので$aの場合ですと<div>が5つ作られるような形になります。
yambejp

2018/08/03 08:55

修正版もあげときました
MeB

2018/08/03 09:01

言葉がたりずお手数おかけしました。 また、追加の質問なのですが… $a[0]['color']; このようになっている場合[0]の部分の処理はどのようにするのが適切なのでしょうか? 毎度すみませんが、宜しくお願いします。
yambejp

2018/08/03 09:06

> $a[0]['color']; えーと、追加で回答しているとおりarray_walkで処理すると$aの要素を ひとつずつ取り出して処理しています なにか違和感がありますか?
MeB

2018/08/03 09:25

あ、すみません。 こう言う多次元配列のような時は追加で処理を書くものだと思っておりました。 失礼しました。
guest

0

php

1<?php foreach ($data as $val): ?> 2<div> 3 <p>色:<?php echo $val['color']; ?></p> 4 <p>タイプ:<?php echo $val['type']; ?></p> 5</div> 6<?php endforeach; ?>

もし$dataの中身がユーザーが任意で入力できる値の場合はhtmlspecialcharsも併用して下さい。

投稿2018/08/03 08:33

k-fukuda

総合スコア219

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MeB

2018/08/03 08:54

ご回答ありがとうございます。 すみません。言葉が足りませんでした。 繰り返したいのは<div>も含めその中全てなので <div> <p>色:[ここに配列のcolorを入れたい]</p> <p>タイプ:[ここに配列のtypeを入れたい]</p> </div> <div> <p>色:[ここに配列のcolorを入れたい]</p> <p>タイプ:[ここに配列のtypeを入れたい]</p> </div> ... と言う形にしたいです。
guest

0

ベストアンサー

とりあえず表示させたいだけなら

<?php echo $data[0]['color'];?>
<?php echo $data[1]['color'];?>
<?php echo $data[2]['color'];?>

です。

配列の基礎的な事がまだのようなので以下のページで学習すると良いかと思います。

PHPで配列(array)を使う方法【初心者向け】

投稿2018/08/03 08:23

namda

総合スコア705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MeB

2018/08/03 08:29

ご回答ありがとうございます。 サイトもありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問