PHP, странная область видимости переменных?

Это больше вопрос о том, почему тогда «как сделать», но это уже несколько дней меня раздражает. В настоящее время я немного поработал с CodeIgniter и временно возвращаюсь к PHP из Ruby, меня беспокоит следующая магия области видимости.

<?php $query = $this->db->get('articles', 2);
        if ($query->num_rows() > 0)
        {
           foreach ($query->result_array() as $row)
           {
              $data[] = $row; # <-- first appearance here
           }
        return $data; # <--- :S what?!
        } 

Как видите, я не совсем гуру PHP, но идея локальной области видимости меня беспокоит, что вне цикла foreach переменная «доступна». Итак, я попробовал это внутри представления:

<?php

    if($a==1)
    {
    $b = 2;
    }
    echo $b;
?>

Что привело к сообщению об ошибке:

Message: Undefined variable: b

В руководстве по PHP рассказывается о локальной области видимости, но мне все еще интересно, почему это происходит, и есть ли особые правила, о которых я не знаю . И это меня пугает :)

Спасибо, что поделились идеями,

5
задан Pacerier 7 September 2015 в 00:15
поделиться