首页 > 解决方案 > PHP问题:无法通过关联数组打印行号白色循环

问题描述

我在 PHP 的帮助下做一个基本的 XML 解析操作simplexml_load_file

我遍历“CD 目录”并在 HTML 表格中打印出歌曲名称、艺术家等。对于我来说,鉴于 XML 文件中信息的结构,我无法打印行号

这是代码:

<?php
  $catalog = simplexml_load_file('https://www.w3schools.com/xml/cd_catalog.xml');
  $cds = $catalog->CD;
?>

<table class="table table-striped table-bordered">
  <thead>
    <tr>
      <th>#</th>
      <th class="text-left">Song</th>
      <th class="text-left">Artist</th>
      <th class="text-left">Year</th>
      <th class="text-left">Price</th>
    </tr>
  </thead>
  <tbody>
    <?php foreach ($cds as $k=>$cd) { ?>
    <tr>
      <td><?php echo $k; ?></td>
      <td><?php echo $cd->TITLE; ?></td>
      <td><?php echo $cd->ARTIST; ?></td>
      <td><?php echo $cd->YEAR; ?></td>
      <td><?php echo $cd->PRICE; ?></td>
    </tr>
    <?php } ?>
  </tbody>
</table>

第一列打印“CD”而不是行号。

我应该改变什么来打印行号?

标签: phpforeach

解决方案


嗨,这是一个简单的解决方案,只需将您的 xml 对象作为字符串转换为一个新数组并循环它:

<?php
$catalog = simplexml_load_file('https://www.w3schools.com/xml/cd_catalog.xml');
$cds = $catalog->CD;
$customCatalog = array();
foreach ($cds as  $value) {
    $temp = array(
        'TITLE' =>$value->TITLE->__toString() ,
        'ARTIST'=> $value->ARTIST->__toString(),
        'COUNTRY'=>$value->COUNTRY->__toString(),
        'COMPANY'=>$value->COMPANY->__toString(),
        'PRICE'=>$value->PRICE->__toString(),
        'YEAR'=>$value->YEAR->__toString()
    );
    $customCatalog [] = $temp;
}

//print_r($customCatalog);

foreach ($customCatalog as $key => $value) {
    if (isset($value)) {
        echo $key;
        echo $value["TITLE"];
        echo $value["ARTIST"];
        echo $value["COUNTRY"];
        echo $value["COMPANY"];
        echo $value["PRICE"];
        echo $value["YEAR"];
    }
}
?>

希望能帮助到你


推荐阅读