数组索引增量

时间:2017-01-24 20:12:23

标签: php arrays

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

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

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

3 个答案:

答案 0 :(得分:1)

您可以使用$_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/

答案 1 :(得分: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在页面之间保存数组。

答案 2 :(得分:0)

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