我正在尝试使用simpleXML从XML文件中检索N个项目,并将信息放入二维数组中,如:
[0][name]
[0][image]
[1][name]
[1][image]
[2][name]
[2][image]
在这种情况下,N项将是6。
我想这两种方式,
1.抓住前0-6键和值
2.或者来自xml文件的随机6。
xml文档有300条记录。
XML Example:
<xml version="1.0">
<info>
<no>1</no>
<name>Name</name>
<picture>http://www.site.com/file.jpg</picture>
<link>http://www.site.com</link>
</info>
</xml>
这是我到目前为止所拥有的。读取xml会生成一个二维数组:
function getItems($file_id, $item_count=null)
{
switch ($file_id)
{
case '2':
$file = "http://xml_file.xml";
if ($xml = simplexml_load_file($file))
{
foreach ($xml->info as $info)
{
$var[] = array(
"Name" => (string)$info->name,
"Image" => (string)$info->picture);
}
return $var;
}
}
}
我可以使用for循环吗?或者以某种方式使用计数变量?
答案 0 :(得分:3)
我可以使用for循环吗?或者使用 某种计数变量?
for($i = 0; $i < count($xml->info); $i++)
{
// your code....
}
<强>更新强>
如果要限制为6,请使用此选项:
for($i = 0; $i <= 6; $i++)
{
// your code....
}
答案 1 :(得分:1)
修改
我很难为嵌套节点放置一个for循环和foreach。
回答n个记录的答案
function getItems($file_id, $item_count=null)
{
switch ($file_id)
{
case '2':
$file = "http://xml_file.xml";
if ($xml = simplexml_load_file($file))
{
$i=0;
foreach ($xml->info as $info)
{
if ($i < $item_count)
{
$var[] = array(
"Name" => (string)$info->name,
"Image" => (string)$info->picture);
}
$i++;
}
return $var;
}
}
}
有人可以建议如何从300条记录中获取n条随机记录吗?
回答随机记录
function getItems($file_id, $item_count=null)
{
switch ($file_id)
{
case '2':
$file = "http://xml_file.xml";
if ($file)
{
$xml = simplexml_load_file($file);
$k = array();
for ($i=0; $i<$item_count; $i++)
{
$k[] = rand(1,300)
}
$i=0;
foreach ($xml->info as $info)
{
if ($i < $item_count)
{
if (in_array($i, $k))
{
$var[] = array(
"Name" => (string)$info->name,
"Image" => (string)$info->picture);
}
}
$i++;
}
return $var;
}
}
}