あなたがわからない場合映画の種類を進める、あなた可能性:XMLデータから
- エキス、すべてのタイプ
- 数回表示される可能性があるため、それらを一意にしてください(XPathでこれを行う方法があるかもしれません。私はそれを知らないので、私は何@Mark proposed使用して、これらのタイプの上に
array_unique
)
- 反復を使用します。このよう
何かがおそらくだろう:
のvar_dump#1:
$xml = simplexml_load_string($xmlData);
$typesListXml = $xml->xpath('interesting/type');
var_dump($typesListXml); // var_dump #1
if (!empty($typesListXml)) {
$typesList = array();
foreach ($typesListXml as $typeXml) {
$typesList[] = (string)$typeXml;
}
var_dump($typesList); // var_dump #2
$typesList = array_unique($typesList);
var_dump($typesList); // var_dump #3
$moviesForType = array();
foreach ($typesList as $type) {
$rawData = $xml->xpath('interesting[type="' . $type . '"]');
if (!empty($rawData)) {
foreach ($rawData as $rawMovie) {
$moviesForType[$type][] = $rawMovie->name . ' - ' . $rawMovie->character;
}
}
}
var_dump($moviesForType); // var_dump #4
// Up to you to present $moviesForType the way you want ;-)
}
、理解し、物事を容易にするために、ここでのvar_dumpの出力です。
array
0 =>
object(SimpleXMLElement)[2]
string 'Movie' (length=5)
1 =>
object(SimpleXMLElement)[3]
string 'Movie' (length=5)
2 =>
object(SimpleXMLElement)[4]
string 'Book' (length=4)
のvar_dump#2:
array
0 => string 'Movie' (length=5)
1 => string 'Movie' (length=5)
2 => string 'Book' (length=4)
のvar_dump#3:
array
0 => string 'Movie' (length=5)
2 => string 'Book' (length=4)
のvar_dump#3:
array
'Movie' =>
array
0 => string 'Casino Royale - James Bond' (length=26)
1 => string 'Bourne Identity - Jason Bourne' (length=30)
'Book' =>
array
0 => string 'Shantaram - Lindsay Ford' (length=24)
は今、それがするのはあなた次第ですプレゼントをするあなたが望むようにデータを表示します。 <ul>
と<li>
タグを構築するダブルforeachループはおそらく;-)
ありがとうございます。私は、 "タイプ"の巨大なリストがあることを忘れて、私はそれぞれのためにxpathを書こうとしませんが、自動的に値をハードコーディングする代わりに "タイプ"を見つける方法があります(例えば、 "ムービー"本")? – jchimpo
$ arrTypes = $ xml-> xpath( 'interesting/type');あなたにすべてのタイプを与えます。残念ながら、これはsimplexmlオブジェクトの配列になります。ループしてすべての型を新しい配列に入れ、次に新しい配列をarray_unique()する必要があります。 – Mark
もう少しお手伝いできますか?私はn00bです。お返事ありがとうございます。 – jchimpo