ノード値を配列に保存しようとしています。これは XML 構造です。
<wildcards>
<conference id="1">
<seeds>
<seed divId="1">10,7,17</seed>
<seed divId="2">8,5,3</seed>
</seeds>
<wild>2,4</wild>
<elimination>11,6,14,1,13,12,20,15</elimination>
</conference>
</wildcards>
xml ファイルはここ
にあります。会議 1 のノード値を、ワイルドカード順位での位置を示す配列キーに関連付けたいと考えています。これが私のコードです:
$xmlDoc = new DOMDocument();
$xmlDoc->load('http://www.tsn.ca/datafiles/XML/NHL/standings.xml');
$searchNode = $xmlDoc->getElementsByTagName('wildcards');
foreach ($searchNode as $node) {
$conference1 = $node->getElementsByTagName('conference');
$conference1 = $conference1->item(0)->nodeValue;
}
echo $conference1;
// $conference1 = str_replace(" ",",",$conference1);
$conference1Array = explode(',', $conference1);
$conference1ArrayLength = count($conference1Array) ;
for ($i = 1; $i < $conference1ArrayLength; $i++) {
echo $i.": ".$conference1Array[$i-1];
echo "<br/>";
}
このウェブサイトにアクセスすると、現在の出力が表示されます。配列を正しくするために、空白文字列を置き換えて「、」で爆発させようとしましたが、うまくいきませんでした。
conference1 の出力は次のとおり10,7,17 8,5,3 2,4 11,6,14,1,13,12,20,15
です。空白があっても、置換は機能しませんでした。
17、3、4 の後にカンマが必要です。アイデアは、チーム ID のキーをデータベースの という名前の列に挿入することseed
です。次に、PHP を使用して、テーブル出力の各部門/ワイルドカードに関連付けられている数字を特定できます。キーとチーム ID/ノード値の関連付けの意味は次のとおりです。
チーム ID: 10 -> 1 (ディビジョン 1 で 1 位)
チーム ID: 7 -> 2 (ディビジョン 1 で 2 番目)
チーム ID: 17 - > 3 (ディビジョン 1 で 3 位)
チーム ID: 8 -> 4 (ディビジョン 2 で 1 位)
チーム ID: 5 -> 5 (ディビジョン 2 で 2 位)
チーム ID: 3 -> 6 (ディビジョン 3 で 3 位)
チーム ID: 2 -> 7 (ワイルドカード 1)
チーム ID: 4 -> 8 (ワイルドカード 2)
チーム ID: 残りすべて (除外)
このリンクのコードを使用してノード値を個別に取得しようとしましたが、自分の状況で動作させる方法がわかりませんでした。ところで、私はそれを試みたコードをもう持っていません。
編集:提供されたリンクを見て、これを思いつきました:
$searchNode = $xmlDoc->getElementsByTagName('wildcards');
$divData = array();
foreach($searchNode as $node){
foreach($node->childNodes as $child) {
foreach($child->childNodes as $secondChild) {
foreach($secondChild->childNodes as $thirdChild) {
$divData[] = array($thirdChild->nodeName => $thirdChild->nodeValue);
}
}
}
}