'for loop'和&的等效语法'while loop'?

时间:2013-11-27 09:19:28

标签: php arrays loops foreach

我知道 foreach for循环 while循环的基本示例,因为我开始编码我没有注意速度执行非常非常重要的脚本从那时起我将每个语句的所有转换为 for loop 。如果它来array我很困惑-_-。我知道它给了我投票这个。喜欢我宁愿让人们为自己解决问题。 我只需要一些使用for循环语句的指南。如何将以下foreach循环转换为for loop / while循环语句?

像我在phpbenchmark.com上看到的那样

  

$ i = 0; while($ i< 1000000)++ $ i;

     

for($ i = 0; $ i< 1000000; ++ $ i);

CODE:

<?php
$user['001'] = 'A';
$user['002'] = 'B';
$user['003'] = 'C';
$user['004'] = 'D';

foreach($user as $id => $name)
{
    echo '<br>Id='.$id.'Name='.$name;
}
?>

非常感谢。

预期输出类似于foreach输出:

Id=001Name=A  
Id=002Name=B  
Id=003Name=C  
Id=004Name=D

如果我有像

这样的数组键,那该怎么办?
$user['AAA'] = 'A';
$user['BBB'] = 'B';
$user['CCC'] = 'C';
$user['DDD'] = 'D';

它将输出为:

Id=AAAName=A  
Id=AAAName=B  
Id=AAAName=C  
Id=AAAName=D

4 个答案:

答案 0 :(得分:1)

您显示的forwhile循环只是递增一个数字,如果该数组的键与这些数字相同,您可以使用该数字来访问数组的元素。换句话说,forwhile循环与数组无关,你只是使用数字作为数组的键。

如果您的数组键不是简单的连续整数,则这更成问题。您可以尝试从$i变量构造正确的键,但为什么?您应该只显式遍历数组的键,foreach是完美的。您可以使用each或其他许多复杂方式执行此操作:

while (list($key, $value) = each($array)) {
   ...
}

但我怀疑它会比foreach快得多。

答案 1 :(得分:0)

你想要这样的东西吗?

$length = count($user);
for ($i = 0; $i < $length; $i++) {
   print $user[$i];
}

编辑:或类似的东西?

$user = array ( '001' => 'A',
              '002' => 'B',
              '033' => 'C' );
while( list ( $id, $name) = each ( $user) )
{
   echo '<br>Id=' .$id. 'Name='.$name;
} 

编辑:也适用于你r AAA = A等案例

答案 2 :(得分:0)

像这样......

<?php
$user['001'] = 'A';
$user['002'] = 'B';
$user['003'] = 'C';
$user['004'] = 'D';

while (current($user)) {

        echo '<br>Id='.key($user).'Name='.$user[key($user)];
        next($user);
}

答案 3 :(得分:0)

试试这个

$user['001'] = 'A';
$user['002'] = 'B';
$user['003'] = 'C';
$user['004'] = 'D';
$keys = array_keys($user);
$length = sizeof($user);
for($i=0; $i<$length; $i++) {
    echo 'id: '.$keys[$i].' value: '.$user[$keys[$i]].'<br />';
}