PHP:用于VS.的foreach?

时间:2013-10-25 08:16:54

标签: php arrays for-loop foreach

请有人向我解释一下这个吗?

$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 个答案:

答案 0 :(得分:2)

不计入条件

你可以试试这个

$size = count($_SESSION['undo']);
for($i = 0; $i< $size; $i++){
   $value = $_SESSION['undo'][$i];
}

答案 1 :(得分: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]];
}

答案 2 :(得分:0)

试试这个:

for($i = 0; $i< count($_SESSION['undo']); $i++){
   $value = $_SESSION['undo'][$i];
}

答案 3 :(得分:0)

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

enter image description here

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

这种方式花费 92 us ,只需花费 16 us ,其中'as'成本 21 us

伙计们,醒来......