0

好的,所以我有一个 PHP 应用程序,它本质上是用对 XML 文件中元素的引用填充数组,在数组上执行 shuffle() 以随机化它,然后循环遍历数组,显示数组中的数据(以及 XML 文件)在屏幕上。

我当前的代码工作正常 - 它填充数组,打乱它,并显示第 0 个索引(这是随机的)。我的问题在于我希望能够动态地重新加载页面上的内容,而不会丢失数组中的数据,但不会链接到不同的页面。更具体地说,我希望能够通过单击按钮来循环遍历数组(无需完全重新加载页面,丢失数组中的有价值数据)。

我尝试使用一些隐藏的表单字段将数组的值加载到临时数组中,然后在页面重新加载时将它们反馈回,但无济于事。我以这种方式发现了很多错误,而且这显然是一种快速而肮脏的方式。

本质上,我希望代码做这样的事情:

$heaps_array = array(...); // Populated by, let's say 3 strings, for argument's sake
shuffle($heaps_array);
echo $heaps_array[0];
// User clicks the Next button...
// Get rid of the $heaps_array[0] from the page content, and...
echo $heaps_array[1];
// User clicks the Next button...
// Get rid of the $heaps_array[1] from the page content, and...
echo $heaps_array[2];
// User clicks the Next button...
...
4

4 回答 4

0

您在这里有几个选择,但您需要了解 PHP 是一种服务器端语言,它在浏览器甚至看到页面内容之前运行和完成。要做动态内容,这就是 javascript 和 ajax 发挥作用的地方。我推荐一个 JavaScript 框架,比如 jQuery,它可以让 AJAX 调用变得简单。

一些方法来做到这一点:

1) 将整个 php 数组输出到页面上的 javascript 变量中。使用 javascript 进行所有数组排序。没有 AJAX。

2)使用php对数组进行排序,将其存储在会话变量中。使用 AJAX 从会话内存中的数组请求新数据,必要时使用数组并返回您需要的值。

3) 使用 AJAX 调用请求并返回整个排序的 PHP 数组。根据需要使用 javascript 来处理它。

根据您希望返回的数据大小,您可能希望通过 AJAX 和客户端处理最大限度地减少数据请求,只需使用 PHP 完成所有数组内容,然后返回您需要的确切值。

于 2013-02-26T04:02:00.717 回答
0

只是把 PHP 的会话管理扔在那里,因为没有人有。 http://php.net/session_start

于 2013-02-26T04:17:22.547 回答
0

您不能将数组发送到客户端(肮脏的方式,而不是ajax)吗?然后用js显示值。

我的意思是:

echo 'var array = new Array('.implode(',', $array).');';

否则您将需要更复杂的方法,最好是构建一个迷你 Web 服务并通过 AJAX 查询获取值。

于 2013-02-26T03:15:00.867 回答
0

PHP 有一个 / 是基于请求的解释器语言,所以每次你需要来自服务器的东西时,你都需要运行一个脚本。如果不使用一些存储引擎(memcached,MySQL,你可以命名它),你不能让这些数组总是在内存中。

正如其他人所说,您可以将数组发送到前端并在 JavaScript 中对其进行操作。这样您就不会加载服务器并将所有数据都保存在内存中。

于 2013-02-26T03:13:35.810 回答