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";