取代" foreach" " for"用PHP

时间:2014-11-25 12:43:13

标签: php loops foreach

我需要更换我的" foreach" " for",但实际上我不知道如何。 这是我的PHP代码的一部分:

$r = "";
$j = 0;
foreach ($orgs as $k => $v) {
    echo "\n\r" . $v->id . "\n\r";
    if (1) {
        $a_view_modl = ArticleView :: model($v->id, $v->id);
        $connection = $a_view_modl->getDbConnection();

谢谢!

4 个答案:

答案 0 :(得分:2)

$r = "";
$j = 0;
foreach ($orgs as $k => $v) {
    echo "\n\r" . $v->id . "\n\r";
    if (1) {  //you don't really need this, because it's allways true
        $a_view_modl = ArticleView :: model($v->id, $v->id);
        $connection = $a_view_modl->getDbConnection();

如果$orgs是关联数组,则变为:

$r = "";
$j = 0;
for($i = 0; $i < count($orgs); $i++)
{
    echo "\n\r" . $orgs[$i]->id . "\n\r";
    $a_view_modl = ArticleView :: model($orgs[$i]->id, $orgs[$i]->id);
    $connection = $a_view_modl->getDbConnection();
}

如果你选择这个解决方案,最好先做一些检查。

如果您使用foreach实现解决方案(在这种情况下更具可读性),您可以增加或减少给定变量,如下所示:

$i++; //if you want the increment afterwards
++$i; //if you want the increment before you read your variable

相同的减量:

$i--; //decrement after reading the variable
--$i; //decrement before you read the variable

答案 1 :(得分:0)

foreach循环只是一个更易读的for循环。它接受一个数组,并将当前键(在本例中为索引)存储到$k,将值存储到$v。 然后,$v具有您在代码段中使用的值 for循环只接受索引数组,而不接受关联数组。

我们可以通过将$v替换为$orgs[ index ]来重写代码,其中index从0开始。

$r = "";
$j = 0;

for ($i = 0; $i < count($orgs); $i++) {
    echo "\n\r" . $orgs[$i]->id . "\n\r";
    if (1) {
        $a_view_modl = ArticleView::model($orgs[$i]->id, $orgs[$i]->id);
        $connection = $a_view_modl->getDbConnection();

答案 2 :(得分:0)

$r = "";
$j = 0;
for($i = 0 ; $i < count($orgs); $i++)
{
    $v = $orgs[$i];
    echo "\n\r" . $v->id . "\n\r";
    if (1) {
        $a_view_modl = ArticleView :: model($v->id, $v->id);
        $connection = $a_view_modl->getDbConnection();
}

答案 3 :(得分:0)

foreach ($orgs as $k => $v) {
    // Your stuff
}

for loop

for ($i = 0; $i < count($orgs); $i++) {
    // Your stuff ... use $orgs[$i];
}