请有人向我解释一下这个吗?
$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
{
}
.
.
.
.
}
如何将上面显示的代码转换为我的代码? 请解释一下为什么?谢谢。
答案 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/,
$key = array_keys($aHash);
$size = sizeOf($key);
for ($i=0; $i<$size; $i++) $aHash[$key[$i]] .= "a";
这种方式花费 92 us ,只需花费 16 us ,其中'as'成本 21 us 。
伙计们,醒来......