PHP:for VS.foreach?

PHP:for VS.foreach?,php,arrays,for-loop,foreach,Php,Arrays,For Loop,Foreach,有人能给我解释一下吗 $key = array_keys($aHash); $size = sizeOf($key); for ($i=0; $i<$size; $i++) $aHash[$key[$i]] .= "a"; 根据PHP基准测试。但是,我的脚本中有一个代码: My CODE: foreach($_SESSION['undo'] as $key2=>$value2) { if{ } else { } .

有人能给我解释一下吗

$key = array_keys($aHash);
$size = sizeOf($key);
for ($i=0; $i<$size; $i++) $aHash[$key[$i]] .= "a";
根据PHP基准测试。但是,我的脚本中有一个代码:

My CODE:

foreach($_SESSION['undo'] as $key2=>$value2)
{
     if{
     }
     else
     {
     }
     .
     .
     .
     .
}
如何将如上所示的代码转换为我的代码? 请解释一下原因?谢谢。

试试这个:

for($i = 0; $i< count($_SESSION['undo']); $i++){
   $value = $_SESSION['undo'][$i];
}
for($i=0;$i
不计入条件

你可以试试这个

$size = count($_SESSION['undo']);
for($i = 0; $i< $size; $i++){
   $value = $_SESSION['undo'][$i];
}
$size=count($_会话['undo']);
对于($i=0;$i<$size;$i++){
$value=$\会话['undo'][$i];
}

在foreach循环中,第一部分是数组,
之后的第二部分是迭代时的当前值。
使用
for
循环时,您使用的是索引,必须手动访问它们。只需执行与您的示例中相同的操作。我假设您在使用数组键时使用的是关联数组

$myArray = $_SESSION['undo'];
$keys = array_keys($myArray);
$size = sizeOf($keys);
for ($i = 0; $i < $size; $i ++) { 
    /* do something with $myArray[$keys[$i]] */
    echo $myArray[$keys[$i]];
}
$myArray=$\u会话['undo'];
$keys=array\U keys($myArray);
$size=sizeOf($key);
对于($i=0;$i<$size;$i++){
/*使用$myArray[$keys[$i]]执行某些操作*/
echo$myArray[$keys[$i]];
}

似乎您犯了一个错误,从

$key=array\u key($aHash);
$size=sizeOf($key);

对于($i=0;$i正在使用结束符
在您的
count()
中,我是否将$i替换为$key?和$value for?不要在循环中使用
count
on,最好在之前指定一个变量,请参见@Harish answer,这是一个想法,如果他使用关联数组,它将不起作用,我认为他所做的是因为他提到的数组键。是的,像这样的代码只会被转换为每个($\u SESSION['undo']作为$key2=>$value2){}我唯一需要的是foreach($_SESSION['undo']as$key2=>$value2){}要像上面所示那样进行转换,我不需要一个类似的东西是convertet 1:1。“aHash”只是上面示例中的变量名。更新了我的代码。哦,等等我的错误,如果我只有这个,我需要一个相当于$_会话['undo']['key'];是的,我错了。很抱歉
$myArray = $_SESSION['undo'];
$keys = array_keys($myArray);
$size = sizeOf($keys);
for ($i = 0; $i < $size; $i ++) { 
    /* do something with $myArray[$keys[$i]] */
    echo $myArray[$keys[$i]];
}
$key = array_keys($aHash);
$size = sizeOf($key);
for ($i=0; $i<$size; $i++) $aHash[$key[$i]] .= "a";