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

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

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

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

1963閲覧

[PHP] 特定の配列の要素の表示

xjaPANDA

総合スコア124

PHP

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2016/11/25 08:50

$test という変数をprint_r で見てみると、下記のようなときに、

Array ( [262] => WP_Post Object ( [ID] => 262 [post_author] => 1 [post_date] => 2016-11-25 15:29:03 [post_date_gmt] => 2016-11-25 06:29:03 [post_content] => [post_title] => slider1 [post_excerpt] => [post_status] => inherit [comment_status] => open ) [263] => WP_Post Object ( [ID] => 263 [post_author] => 1 [post_date] => 2016-11-25 15:29:03 [post_date_gmt] => 2016-11-25 06:29:03 [post_content] => [post_title] => vvv [post_excerpt] => [post_status] => inherit [comment_status] => open ) [264] => WP_Post Object ( [ID] => 264 [post_author] => 1 [post_date] => 2016-11-25 15:29:04 [post_date_gmt] => 2016-11-25 06:29:04 [post_content] => [post_title] => free-background36251 [post_excerpt] => [post_status] => inherit [comment_status] => open ) [265] => WP_Post Object ( [ID] => 265 [post_author] => 1 [post_date] => 2016-11-25 15:29:04 [post_date_gmt] => 2016-11-25 06:29:04 [post_content] => [post_title] => free-background36203 [post_excerpt] => [post_status] => inherit [comment_status] => open ) )

例えば、変数$test内の下にある階層の[post_title]だけのの個数をカウントしたい場合や、ループを使って[post_title]の中身を全て表示したいのですが、一番上の階層の配列名が異なるため、普通にcount()やforなどでループできないのですが、どのようにやるのがベストでしょうか?

[post_title]の中身を全て表示する、イメージとしては、

<?php for($x = 0; $x < count($text[][post_title]); $x++ ){ ?> <p><?php echo $text[][post_title][$x]; ?></p> <?php } ?>

このような感じで考えていたのですが、ちょっと無理が出てきてしまったので考え中です。よいやり方がありましたら、 教えてください。よろしくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

PHP

1$postTitleCount = 0; 2foreach($test as $data) { 3 if(isset($data->post_title)) { 4 $postTitleCount++; 5 echo $data->post_title; 6}

配列じゃなくてオブジェクトのようですので、$data['post_title']ではなく$data->post_titleのようにアクセスしないと取れませんね。

投稿2016/11/25 08:59

kunai

総合スコア5405

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

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

xjaPANDA

2016/11/25 09:27

ありがとうござまいす。とても参考になります。おかげで解決しました。感謝します。全部、まとめて配列と解釈していたので、オブジェクトとの違いをしる良い機会となりました。
guest

0

この回答は間違いです。


こういうことではないのでしょうか?

PHP

1// keyが 'post_title' のvalueのみを表示 2foreach($test as $item) { 3 if (array_key_exists('post_title', $item)) { 4 echo '<p>' . $item['post_title'] . '</p>'; 5 } 6} 7 8// keyが'post_title'の要素をカウント 9$cnt = 0; 10foreach($test as $item) { 11 $cnt = $cnt + (array_key_exists('post_title', $item) ? 1 : 0); 12} 13echo "'post_title'が" . $cnt . "個ありました";

あ~だめだ。$test array のvalueがarrayじゃなくObjectだった。

投稿2016/11/25 09:02

編集2016/11/25 09:10
Y.H.

総合スコア7914

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

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

xjaPANDA

2016/11/25 09:28

ありがとうござまいす。関数の使い方など、とても参考になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問