【问题标题】:Array index increment数组索引增量
【发布时间】:2017-01-24 20:12:22
【问题描述】:

我在 php 代码中有这个数组。我希望无论何时调用页面,它都应该打印第一个数组索引的值以及下一次数组索引的第二个值等等......我可以做什么修改?现在它在被单次调用时打印所有内容。

<html>
<?php
$addresses = array('ifcbxespra', 'ifcheqjbmea', 'ifcqiknsa', 'ifcqirtjla', 'ifcwqsrlmn', 'ifclmkmzhz','ifcwdujhgc','ifcihddngh','icffhzudcd','ifchnsqzgs','ifcgssqrhg');

foreach ($addresses as &$value) {
    echo  $value ;
}
?>
</html>

【问题讨论】:

  • 你建议如何跟踪它何时被调用?它被调用了多少次?您是否只想在同一访问者调用该页面时才增加?或者如果用户 A 查看它,您是否希望它首先递增,然后如果用户 B 查看它,则再次递增,等等。
  • 因此,您从未尝试过自己尝试并实现您的要求!所以这是一个替我做的问题
  • @cale_b yesss 在我使用 array_rand 函数之前,它会自动调用并打印随机数,因此没有唯一性。是的,我想将其称为 11 次作为数组的大小。正如您所说,当用户 A 查看它时 ifcbxespra,当用户 B 访问下一个值时,即 ifcheqjbmea。
  • @RiggsFolly 在我使用从数组中选择随机值的数组 rand 函数之前,但正如我上面提到的,我需要有这样的输出,而且我不习惯做编程,所以需要帮助
  • @Ravi,您应该阅读一些有关 Web 开发的书籍并了解基础知识。

标签: php arrays


【解决方案1】:

我不确定我是否明白你想要什么。但是如果你想在页面加载一次时打印第一个数组的值,在页面加载另一次时打印第二个数组的值等等,你可以这样做:

<?php
if(!isset($addresses) || empty($addresses)){  //checks if the array is not initialized or if it's empty
   $addresses = array('ifcbxespra', 'ifcheqjbmea', 'ifcqiknsa', 'ifcqirtjla', 'ifcwqsrlmn', 'ifclmkmzhz','ifcwdujhgc','ifcihddngh','icffhzudcd','ifchnsqzgs','ifcgssqrhg');
   echo $addresses[0];  //print the first value
   array_splice($addresses, 0, 1);  //removes the first element of the array and reindexes it 
}else{
    echo $addresses[0];  //print the first value
    array_splice($addresses, 0, 1);  //removes the first element of the array and reindexes it
}

其背后的逻辑是:如果数组已经存在并且不为空(它有值),则打印第一个值然后将其删除,因此下一次第一个值将是第二个实际值。当数组为空时,重新定义为重新开始。

你可以搜索更多关于array_splice()here的信息。

P.S.:你必须使用PHP's $_SESSION 来保存页面之间的数组。

【讨论】:

  • 根据 OP 的评论,这将不起作用,即无论哪个用户查看页面,这都应该改变。如果用户 A 看,应该是第一个条目,然后如果用户 B 看,应该是第二个条目,等等。$_SESSION 不会跨不同的用户/浏览器存储。
【解决方案2】:

您可以使用$_SESSION 之类的东西并将最后一个index 存储在那里。

例如:

$array = array('one', 'two', 'three');

if (!$_SESSION['nextIndex'] || $_SESSION['nextIndex'] >= count($array)) {
  $_SESSION['nextIndex'] = 0
}

// print the value 
echo $array[$_SESSION['nextIndex']];

// increment the nextIndex
$_SESSION['nextIndex']++;

注意:这仅适用于同一用户。每次页面重新加载都会增加数组索引。但是,如果您需要一些跨用户计数,那么您必须将信息存储在服务器上的某个位置,例如数据库,甚至是一个简单的 txt 文件。

看看这个例子:http://hibbard.eu/how-to-make-a-simple-visitor-counter-using-php/

【讨论】:

  • 根据 OP 的评论,这将不起作用,即无论哪个用户查看页面,这都应该改变。如果用户 A 看,应该是第一个条目,然后如果用户 B 看,应该是第二个条目,等等。$_SESSION 不会跨不同的用户/浏览器存储。
【解决方案3】:

最后我用 MySQL 解决了这个问题。创建了一个包含所有代码的列。然后每次用户按下按钮时调用脚本。在脚本中,我首先获取原始值并打印该值,然后删除该原始值。所以每次用户都会从代码列表中获得唯一的价值而且它工作正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    • 2019-06-09
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    相关资源
    最近更新 更多