XML数据到PHP数组中

时间:2011-11-17 10:23:00

标签: php xml

我从XML文件中获取数据,我需要在PHP中使用数组生成数据。任何人都可以告诉我如何在计数未知时填充PHP数组吗?

function getFeed($feed_url) 
{
  $content = file_get_contents($feed_url);
  $x = new SimpleXmlElement($content);

  echo "<ul>";

  foreach($x->channel->item as $entry) 
  {
    echo "
    <li>
    <a href='$entry->link' title='$entry->title' target='_new'> " . $entry->title . "</a>
    </li>";
  }

  echo "</ul>";
}

5 个答案:

答案 0 :(得分:1)

  

问题:当计数未知时,任何人都可以告诉我如何填充php数组

声明数组并向其添加项目或使用array_push

$something = array();
$something[] = 'first item';
$something[] = 'second item';

答案 1 :(得分:0)

希望这适合你:

$c = 0;
$entries = Array();
foreach($x->channel->item as $entry) {
   echo "
      <li>
      <a href='$entry->link' title='$entry->title' target='_new'> " . $entry->title . "  </a>
      </li>";
      $entries[$c] = $entry->title;
      $c++;
}

答案 2 :(得分:0)

我可以看到您在浏览XML节点时打印HTML列表。因此,如果我得到您的问题,您还需要使用从XML获取的数据填充数组(同时),实际上将XML转换为数组...是您想要的吗?

然后,您只需要在foreach语句之前声明一个空数组:     $arr = array(); 然后,在foreach中,以这种方式向数组中添加新字段:     $arr[] = $entry; 如果您需要指定更多字段,可以执行以下操作:

$arr[] = array(
    'field' => $entry->fieldvalue
);`

希望这有帮助!

答案 3 :(得分:0)

function getFeed($feed_url) {
    $content = file_get_contents($feed_url);

    $x = new SimpleXmlElement($content);

    $count = 0;
    $data = array();

    foreach($x->channel->item as $entry) {
        $data[$count]['link'] = $entry->link;
        $data[$count]['title'] = $entry->title;
        $count++;        
    }

    return $data;
}

可能是更好的解决方案。然后,您可以以更灵活的方式操纵数据;保持数据与演示分开。只需循环浏览$data并根据需要输出。

答案 4 :(得分:0)

您始终可以使用array_push()或基本数组方法。 http://php.net/manual/en/function.array-push.php

阵列推送

$list = array();
array_push($list,$element);
or
$list[] = $element;

完整代码

<?php
function getFeed($feed_url) {
  $content = file_get_contents($feed_url);
  $x = new SimpleXmlElement($content);
  $list = array();

  foreach($x->channel->item as $entry) {  
    array_push($list,$entry);
  }
  return $list;
}

$list = getFeed("url");
echo "<ul>";
foreach($list as $entry) {
  echo "
  <li>
    <a href='$entry->link' title='$entry->title' target='_new'> " . $entry->title . "</a>
  </li>";
}
echo "</ul>";


?>