<?php
$xml=simplexml_load_file("https://www.w3schools.com/xml/cd_catalog.xml") or die("Error: Cannot create object");
$json = json_encode($xml);
$array = json_decode($json,TRUE);
?>
<table>
<tr>
<th>TITLE</th>
<th>ARTIST</th>
<th>COUNTRY</th>
</tr>
@foreach ($array as $books)
@foreach ( $books as $ddd)
@foreach ( $ddd as $key => $value)
<tr>
<td>{{ $value }}</td>
<td>{{ $value }}</td>
<td>{{ $value }}</td>
</tr>
@endforeach
@endforeach
@endforeach
</table>
我的foreach循环结果如何像这样? 我尝试了各种foreach循环,组合,或者发生了字符串到数组的转换错误或未定义的索引,当我尝试对每个循环执行两次时,我得到的数组给出了需要字符串的错误。 主要是在这里,我使用json编码和解码技术将xml转换为数组,并为每个循环使用数据填充表
<table>
<tr>
<th>TITLE</th>
<th>ARTIST</th>
<th>COUNTRY</th>
</tr>
@foreach ($xml->children() as $books)
<tr>
<td>{{ $books->TITLE }}</td>
<td>{{ $books->ARTIST }}</td>
<td>{{ $books->COUNTRY }}</td>
</tr>
@endforeach
</table>
答案 0 :(得分:0)
您的$array
变量包含一个名为CD
的单个条目,其中包含一系列书籍。因此,您需要使用嵌套的foreach()
或将新变量$books
分配给$array["CD"]
,然后在其上循环:
<?php
$xml=simplexml_load_file("https://www.w3schools.com/xml/cd_catalog.xml") or die("Error: Cannot create object");
$json = json_encode($xml);
$array = json_decode($json,TRUE);
$books = $array["CD"];
?>
...
@foreach($books AS $book)
<tr>
<td>{{ $book["TITLE"] }}</td>
<td>{{ $book["ARTIST"] }}</td>
<td>{{ $book["COUNTRY"] }}</td>
</tr>
@endforeach
// OR
@foreach($array AS $booksAlt)
@foreach($booksAlt AS $bookAlt)
<tr>
<td>{{ $bookAlt["TITLE"] }}</td>
<td>{{ $bookAlt["ARTIST"] }}</td>
<td>{{ $bookAlt["COUNTRY"] }}</td>
</tr>
@endforeach
@endforeach
答案 1 :(得分:0)
我将其转换为纯PHP,但您应该能够轻松地将其更改回Blade语法。
我认为您刚刚深入1级。如果您在$array
上循环,然后在$track
上循环,则应该可以访问所需的所有信息。
使用合理的变量名称将有助于您跟踪层次结构。您正在检索CD及其相关的曲目,因此我相应地命名了变量。
<?php
$xml = simplexml_load_file("https://www.w3schools.com/xml/cd_catalog.xml") or die("Error: Cannot create object");
$json = json_encode($xml);
$array = json_decode($json, TRUE);
?>
<pre>
<table>
<tr>
<th>TITLE</th>
<th>ARTIST</th>
<th>COUNTRY</th>
</tr>
<?php foreach ($array as $cd): ?>
<?php foreach ($cd as $track): ?>
<tr>
<td><?php echo $track['TITLE']; ?></td>
<td><?php echo $track['ARTIST']; ?></td>
<td><?php echo $track['COUNTRY']; ?></td>
</tr>
<?php endforeach; ?>
<?php endforeach; ?>
</table>
</pre>