-2

请有人向我解释一下吗?

$key = array_keys($aHash);
$size = sizeOf($key);
for ($i=0; $i<$size; $i++) $aHash[$key[$i]] .= "a";

foreach($aHash as $key=>$val) $aHash[$key] .= "a";

根据 PHP 基准测试。但是我的脚本中有一个代码:

My CODE:

foreach($_SESSION['undo'] as $key2=>$value2)
{
     if{
     }
     else
     {
     }
     .
     .
     .
     .
}

如何将如上所示的代码转换为我的代码?请解释为什么?谢谢你。

4

4 回答 4

2

不计入条件

你可以试试这个

$size = count($_SESSION['undo']);
for($i = 0; $i< $size; $i++){
   $value = $_SESSION['undo'][$i];
}
于 2013-10-25T08:21:45.313 回答
1

在 foreach 循环中,第一部分是您的数组,第二部分as是迭代时的当前值。使用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]];
}
于 2013-10-25T08:26:14.827 回答
0

试试这个:

for($i = 0; $i< count($_SESSION['undo']); $i++){
   $value = $_SESSION['undo'][$i];
}
于 2013-10-25T08:18:37.120 回答
0

似乎你犯了一个错误,来自http://www.phpbench.com/

在此处输入图像描述

$key = array_keys($aHash);
$size = sizeOf($key);
for ($i=0; $i<$size; $i++) $aHash[$key[$i]] .= "a";

这种方式花费了 92 us,foreach 花费了 16 us,'as' 花费了 21 us

各位,醒醒吧……

于 2013-10-25T08:49:46.440 回答