Php foreach导致无限循环

Php foreach导致无限循环,php,session,foreach,Php,Session,Foreach,我在$\u会话中存储了一个数组: 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" ["

我在$\u会话中存储了一个数组:

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永远不会终止)

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

因此,让我们先看看您的代码
var\u dump($\u SESSION['SESSION\u article'])
您得到了一个数组,其中两个元素都是关联数组。现在请注意,这是一个数组数组,因此您在场景2中编写的代码是错误的

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

foreach($\u SESSION['SESSION\u article',list($a,))
{
//这里的东西
}

或者最好将$\u SESSION['SESSION\u article']作为一个关联数组进行遍历,如下所示

$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 
  }

}
$myArray=$\u SESSION['SESSION\u article']
$field=count($myArray,count\u RECURSIVE-(int)2)
对于($record=0;$record<$myArray.length;$record++){
//记录编号
对于($field=0;$field<$field;$field++){
//在此合并记录和字段
}
}
希望我能伸出援助之手? 请结帐


他们真的有一个很好的文档,只需花你的时间。

代码很好-你有更多的代码没有在这里显示吗?你有没有尝试在
foreach
循环中回显一些东西,看看它到底在做什么?只需让它回显
$artKey
值即可。然后,当您加载它时,您应该了解它为什么会运行一个无止境的循环。您是否确实删除了不影响键或值的
//内容以确保它不会影响它,或者您只是在猜测?对我来说似乎很好:您知道代码是在PHP中,对吗没有$myArray.length这样的东西,对$cartArt的访问权限应该是$cartArt[“id”]/$cartArt[“amount”],这很好。在PHP中,这两种方法都能很好地工作,感谢您的纠正——这就是即将到来的极客的生活
$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 
  }

}