PHP - 动态更改内容

时间:2013-02-26 03:03:31

标签: php arrays variables dynamic reload

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

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

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

基本上,我希望代码执行以下操作:

$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 个答案:

答案 0 :(得分:0)

PHP有一个基于请求的解释器语言,因此每次需要服务器时都需要运行脚本。如果不使用某些存储引擎(memcached,MySQL,你可以命名),就不能将这些数组永远放在内存中。

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

答案 1 :(得分:0)

你不能把数组发送到客户端(脏的方式,而不是ajax)? 然后用js。

显示值 我的意思是:

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

否则你需要更加软化的方法,最好是建立一个迷你web服务并通过AJAX查询获取值。

答案 2 :(得分:0)

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

一些方法:

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

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

3)使用AJAX调用来请求并返回整个排序的PHP数组。使用javascript按照您的意愿进行操作。

根据您希望返回的数据大小,您可能希望通过AJAX和客户端处理最小化数据请求量,并且只需使用PHP来执行所有数组操作然后返回所需的确切值

答案 3 :(得分:0)

将PHP的会话管理放在那里,因为没有人。 http://php.net/session_start