当前位置: 首页 > 知识库问答 >
问题:

随机选择XML元素-不起作用

卫嘉言
2023-03-14

我试图使用PHP从我拥有的城镇列表中随机选择一个XML元素,但是每当我觉得我可能已经修复了它时,我都会得到同样的错误。

我对PHP相当陌生,已经克服了许多障碍,但这是一个我无法理解的障碍。

错误是:

致命错误:在/var/www/dev.weclarkwatchrepairs.co.uk/wordpress/wp-content/themes/watchrepairs-2016/index.php:125堆栈跟踪:#0/var/www/dev.weclarkwatchrepairs.co.uk/wordpress/wp-content/themes/watchrepairs-2016/index.php(125):simplexmlelement->__construct('towns.xml',1,true)#1/var/www var/www/dev.we.')#2/var/www/dev.weclarkwatchrepairs.co.uk/wordpress/wp-blog-header.php(19):require_once('/var/www/dev.we.')#3/var/www/dev.weclarkwatchrepairs.co.uk/wordpress/index.php(17):require('/var/www/dev.we.')#4{main}在/var/www/dev.weclarkwatchrepairs.co.uk/wordpress/wp-content/themes/watchrepairs-2016/index.php第125行中抛出

以下是PHP代码:

$towns = new SimpleXmlElement("towns.xml", 1, true);
$randomTown = array_rand($towns->xpath("ROW"));

<h3><?php echo $randomTown[0]->FIELD2 . ", " . $randomTown[0]->FIELD4; ?></h3>

下面是XML的一个示例

<?xml version="1.0"?>
<ROWSET>
<ROW>
<FIELD1>1</FIELD1>
<FIELD2>Aaron&apos;s Hill</FIELD2>
<FIELD3>Surrey</FIELD3>
<FIELD4>England</FIELD4>
<FIELD5>SU957435</FIELD5>
<FIELD6>495783</FIELD6>
<FIELD7>143522</FIELD7>
<FIELD8>51.18291</FIELD8>
<FIELD9>-0.63098</FIELD9>
<FIELD10>GU7 2</FIELD10>
<FIELD11>South East</FIELD11>
<FIELD12>Suburban Area</FIELD12>
</ROW>
<ROW>
<FIELD1>2</FIELD1>
<FIELD2>Abbas Combe</FIELD2>
<FIELD3>Somerset</FIELD3>
<FIELD4>England</FIELD4>
<FIELD5>ST707226</FIELD5>
<FIELD6>370749</FIELD6>
<FIELD7>122688</FIELD7>
<FIELD8>51.00283</FIELD8>
<FIELD9>-2.41825</FIELD9>
<FIELD10>BA8 0</FIELD10>
<FIELD11>South West</FIELD11>
<FIELD12>Village</FIELD12>
</ROW>
</ROWSET>

共有1个答案

龚玄天
2023-03-14

使用array_rand会出现问题,因为该函数不返回数组元素。它返回随机数组元素的索引。尝试使用以下代码:

<?php

$towns = new SimpleXmlElement("towns.xml", 1, true);
$rows = $towns->xpath("ROW");
$randomTown = array_rand($rows);
?>

<h3><?php echo $rows[$randomTown]->FIELD2 . ", " .
               $rows[$randomTown]->FIELD4; ?></h3>
 类似资料:
  • 问题内容: 如何选择前5个随机元素 但它需要所有随机元素。我只想要第一个5。 还有另一种方法可以做同样的事情吗? 问题答案: 这是从jQuery选择中获取5个随机元素的方法,无需插件! 此时,您已经从jQuery返回的所有LI中随机选择了5个DomElement 然后,您可以对它们进行任何操作, 例如更改其颜色: 或显示其合并的文本内容:

  • 问题内容: 我有一个选择 但是当两个c.CollegeName == collegeSelection.CollegeName都匹配时,仍未选择该项目。文档似乎没有帮助。有任何想法吗? 问题答案: 应该在标记中使用,而不是在标记中使用。请仔细阅读其文档和示例。 因为指令对所选选项的确定基于。因此,一旦删除,您的代码就可以使用。 我创建了一个非常简单的插件来演示指令中的“选定”功能。 更多细节: A

  • 问题内容: 假设我有一个数组,我想随机选择一个元素。 最简单的方法是什么? 明显的方法是。但是也许有红宝石之类的东西?或者如果不能通过扩展创建这种方法? 问题答案: Swift 4.2及更高版本 推荐的新方法是Collection协议的内置方法:。它返回一个可选参数以避免我以前假设的空情况。 如果不创建数组并且不能保证count> 0,则应执行以下操作: Swift 4.1及以下 只是为了回答您的

  • 假设我有一个数组,我想随机选择一个元素。 最简单的方法是什么? 最明显的方法是数组[随机索引]。但可能有类似ruby的数组。示例 ?或者,如果不是,那么可以使用扩展创建这样的方法吗?

  • 本文向大家介绍在JavaScript中随机选择元素的功能,包括了在JavaScript中随机选择元素的功能的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个不包含像这样的重复元素的文字数组- 我们需要编写一个JavaScript函数,该函数接受一个唯一文字数组和一个数字n。该函数应返回n个元素的数组,这些元素都是从输入数组中随机选择的,并且任何元素在输出数组中不应出现多次。 因此,让我们为该

  • 我被分配了一项编程任务,但我被卡住了。其说明如下: 有一个名为“秘密圣诞老人”(给他们礼物)的游戏,有很多孩子参加。对于每个参与的孩子,都有一个来自参与孩子的秘密圣诞朋友。我必须编写一个程序,为每个参与的孩子挑选一个秘密的圣诞老人朋友。 示例:如果Bob,Alice,John和George是参与的孩子,在随机选择之后, 输出可能看起来像 具有相同输入的连续两次程序运行不应有相同的结果。 我的想法是