foreach导致无限循环

时间:2015-06-25 15:41:16

标签: php session foreach

我有一个存储在$ _SESSION中的数组:

var_dump($_SESSION['session_article']);

//result:
array(2) { 
    [0]=> array(2) { 
        ["id"]=> string(1) "3" 
        ["amount"]=> int(2) 
    } 
    [1]=> array(2) { 
        ["id"]=> string(2) "13" 
        ["amount"]=> int(1) 
    } 
} 

如果我这样做:

for($artKey = 0;$artKey < count($_SESSION['session_article']);$artKey++){
    $cartArt = $_SESSION['session_article'][$artKey];

    //stuff that doesn't affect key or value
}

一切都很好......但如果我这样做:

foreach($_SESSION['session_article'] as $artKey => $cartArt){
    //stuff that doesn't affect key or value
}

页面不会停止加载(无限加载,就像foreach永远不会终止一样)

1 个答案:

答案 0 :(得分:0)

我想知道计算机不是一台愚蠢的机器,所以每当你没有得到正确的结果,那么它不是计算机问题,而是你编码的方式。

所以让我们先看看你的代码var_dump($_SESSION['session_article'])你有一个数组,其中两个元素都是一个关联数组。现在观察这是一个数组数组,因此您在方案2中的代码是错误的。

如果它只是一个数组说$myArray = ['Simon', 'Peter', 'You']那么这个犯规工作正常(注意我在这里使用短数组语法,如果你愿意,可以使用array())。但问题是你有多维数组,所以你应该

foreach($_SESSION['session_article'], list($a,)) { //stuffs here }

或更好地将$ _SESSION [&#39; session_article&#39;]作为一个关联数组,如此

$myArray = $_SESSION['session_article']
$field = count($myArray, COUNT_RECURSIVE - (int)2)
for ($record = 0; $record < $myArray.length; $record++) {
 //record number

  for ($field = 0; $field < $field ; $field++) {
    //combine record and field here 
  }

}

希望我可以伸出援助之手? 请结账 http://php.net/manual/en/function.count.php http://php.net/manual/en/control-structures.foreach.php

他们真的有一个好的医生,只是慢慢来。