PHP全局变量不是通过foreach设置的

时间:2018-01-17 11:30:23

标签: php loops variables foreach

尝试将$mode设置为1后,echo命令打印出来:

mode: 0 (see here)
before: 0
after: 1

mode: 0 (see here)
before: 0
after: 1

为什么?

$generations = str_get_html($json['html'])->find('option');
$loop = true;
$tries = 1;
$mode = 0;
while ($loop && $tries > 0) {echo 'mode: '.$mode.' (see here)<br>';
    $loop = false;
    foreach ($generations as $generation) {
        ++$j;
        if ($j == 0) continue; // Пропускаем первый элемент спарсенного списка

        $params = array(
            // [0] - числовой ID, [1] - "человекопонятное" название
            'filter_brand' => $car[0],
            'filter_model' => $model[0],
        );

        if ($generation != null) {
            if ($mode == 0) {
                $generationn = array(trimNumber(trim($generation->getAttribute('value'))), trim($generation->plaintext));
                $params['filter_generation'] = $generationn[0];
                $carlist_plain = parse('http://podbor-akkumulyatora.ru/site/submit/?' . http_build_query($params));
                if (!$carlist_plain) die('Не удалось спарсить двигатели у поколения ('.$generationn[1].') модели ('.$model[1].') машины ('.$car[1].')');
            } else {
                // Not working
                $gen_a = $generation->find('a', 0);
                $generationn = array(trim($gen_a->href), trim($gen_a->plaintext));
                debug($generationn);
                //$carlist_plain = parse('http://podbor-akkumulyatora.ru/site/submit/?' . );
            }
        } else {
            $carlist_plain = parse('http://podbor-akkumulyatora.ru/site/submit/?' . http_build_query($params));
            if (!$carlist_plain) die('Не удалось спарсить двигатели у модели ('.$model[1].') машины ('.$car[1].')');
        }

        $carlist_plain = str_get_html($carlist_plain[0]);
        $carlist = $carlist_plain->find('.carlist ul li');
        if (count($carlist) < 1) {
            $generations = $carlist_plain->find('.generation ul li[itemprop="itemListElement"]');
            $loop = true;
            --$tries;
            echo 'before: '.$mode.'<br>';
            $mode = 1; // Not working
            echo 'after: '.$mode.'<br><br>';
            break;
        }

        // Handling $carlist here...
    }
}

1 个答案:

答案 0 :(得分:0)

非常异常,但我将$mode移出了所有循环,代码正在运行