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

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

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

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

PHP

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

例外処理

例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

配列

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

Q&A

解決済

3回答

2060閲覧

【PHP】配列の取得方法 arrayの記述方法

satokibi

総合スコア5

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

PHP

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

例外処理

例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

配列

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

0グッド

1クリップ

投稿2020/07/05 10:36

編集2020/07/05 12:44

前提・実現したいこと

APIからの取得データで0以外の配列を取得したいと思います。

ここに質問の内容を詳しく書いてください。
APIからのデータでワードプレスに自動取込の仕組みを作成したいと思っています。
基本書を読んで間もなく簡単な間違いというところまでは分かりますが先に見えずご質問させて頂きました。

PHP

1$xml = "APIコード=xml"; 2 3$xml = simplexml_load_file($xml, 'SimpleXMLElement', LIBXML_NOCDATA); 4 5$item = $xml->result->items->item; 6$genre = $item -> iteminfo -> genre ->item -> name ; 7 8var_dump($xml); 9var_dump($genre); 10

発生している問題・エラーメッセージ

PHP

1 object(SimpleXMLElement)#2 (1) { [0]=> string(12) "独占配信" }
{ ["genre"]=> object(SimpleXMLElement)#15 (1) { ["item"]=> array(7) { [0]=> object(SimpleXMLElement)#18 (2) { ["id"]=> string(4) "6548" ["name"]=> string(12) "独占配信" } [1]=> object(SimpleXMLElement)#17 (2) { ["id"]=> string(4) "1069" ["name"]=> string(6) "●●" } [2]=> object(SimpleXMLElement)#21 (2) { ["id"]=> string(4) "4030" ["name"]=> string(21) "●●" }

$xmlの中身を確認すると配列はありますが、$genreで確認すると一つだけしか取得することができません。
arrayを使うところまでは分かりますが処理の仕方が分からずご教示頂けると幸いです。

試したこと

$xml_2 = array($xml);

など一度arrayで配列に変換しないといけないのかとは考えておりますが
エラーになってしまい知識不足になります。

PHP

1Notice: Trying to get property 'result' of non-object in F:********.php on line 16

大変恐れ入りますがよろしくお願い致します。

追記 foreach文を追加

PHP

1$xml = simplexml_load_file($xml, 'SimpleXMLElement', LIBXML_NOCDATA); 2 3var_dump((array)$xml); 4 5$item_list = $xml->result->items->item; 6foreach($item_list as $item){ 7$genre[]=$item -> iteminfo -> genre ->item -> name; 8 9 10$a = "<div> 11◆ジャンル:$genre[0]<BR> 12</div>"; 13echo $a; 14} 15var_dump($xml); 16var_dump($genre); 17 18追記➁ foreach文追加 19```PHP 20foreach($genre as $a => $b){ 21 echo $b; 22}

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

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

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

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

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

guest

回答3

0

php

1$genre= $item-> iteminfo -> genre; 2 3 4$genre2 = count($genre->item); 5$genre3 = []; 6for($i=0;$i <= $genre2 -1 ; $i++){ 7 $genre3[] = (string)$genre->item[$i]->name; 8 } 9foreach ($genre3 as $genrelist): 10echo $genrelist; 11endforeach;

foreach文で情報を取ることができました。
$genreの定義するところでitemからidとnameに分かれており少しいじったところ
無事に情報取得ができました。
構文の理解が足りていませんでした。

投稿2020/07/12 09:31

satokibi

総合スコア5

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

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

0

php

1$genre= $item-> iteminfo -> genre; 2 3 4$genre2 = count($genre->item); 5$genre3 = []; 6for($i=0;$i <= $genre2 -1 ; $i++){ 7 $genre3[] = (string)$genre->item[$i]->name; 8 } 9foreach ($genre3 as $genrelist): 10echo $genrelist; 11endforeach;

foreach文で情報を取ることができました。
$genreの定義するところでitemからidとnameに分かれており少しいじったところ
無事に情報取得ができました。
構文の理解が足りていませんでした。

投稿2020/07/12 05:51

satokibi

総合スコア5

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

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

javahack

2020/07/12 08:49

m.ts10806さんのアドバイスでforeachの使用に至ったのなら、ベストアンサーはm.ts10806さんに付けるべきでは?
satokibi

2020/07/12 09:34

ご指摘頂きありがとうございました。 先ほど、修正させて頂きました。今後気を付けて操作します。
guest

0

ベストアンサー

「genreの配下にリスト形式で複数情報がある」のでしたらgenre自体をforeachで回しては。

投稿2020/07/05 11:40

m.ts10806

総合スコア80875

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

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

satokibi

2020/07/05 12:36

ご回答ありがとうございます。 foreachでgenreを回してみましたが配列[0]のものしか取得できなかったです。 APIのデータの配下にはあるのに処理が足りないみたいです。 もう少し考えてみます。
m.ts10806

2020/07/05 12:37

どういう風に書かれたのでしょうか。 書き方次第では全くループしないようにも思います。
satokibi

2020/07/05 12:45

早々にありがとうございます。 先ほど、コードを二つ追記しました。 初歩的なミスが多く申し訳ございません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問