【问题标题】:PHP - Changing content dynamicallyPHP - 动态更改内容
【发布时间】:2013-02-26 03:03:31
【问题描述】:

好的,所以我有一个 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...
...

【问题讨论】:

  • 也许你在看 AJAX?
  • 如果您重新加载页面,数据必须存储:在文件、数据库、会话、cookie 中,通过 post\e\get 以隐藏形式解析。最佳选择取决于您的情况
  • 如果订单是随机的,那么您只需要知道用户看到的最后一个,选择一个不包括已经看到的新随机数,这应该是要移动的数据少得多.

标签: php arrays variables dynamic reload


【解决方案1】:

PHP 有一个 / 是基于请求的解释器语言,所以每次你需要从服务器获取某些东西时,你都需要运行一个脚本。如果不使用某些存储引擎(memcached、MySQL 等),您无法将这些数组始终保存在内存中。

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

【讨论】:

    【解决方案2】:

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

    我的意思是:

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

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

    【讨论】:

      【解决方案3】:

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

      一些方法:

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

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

      3) 使用 AJAX 调用请求并返回整个排序后的 PHP 数组。使用 javascript 随心所欲地处理它。

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2017-09-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多