Проблема с массивом PHP при зацикливании и отражении - PullRequest
0 голосов
/ 11 марта 2012

У меня проблемы с тем, чтобы заставить массив работать правильно, позвольте мне показать вам код здесь

function scanArray(){
$al = sizeof($_userLoaders);
echo $al. "<br />";
for ($tr = 0; $tr <= $al; $tr++) {
echo  "value: " .$tr. "<br />";
echo $_userLoaders[$tr];


}



}

//Fetch user's loaders.

$_userLoaders;

function get_user_loaders(){ 

         $con = connectToMySQL();//connects to my_sql

        mysql_select_db("my_database", $con);//connect database

        $t = mysql_query("SELECT * FROM someTable
        WHERE value_a=".$_SESSION['value_a']." AND value_b=someValue");
        $x= 0;
        //lets loop through the results and create an array to compare later.
            while ($result = mysql_fetch_array($t)){
             $_userLoaders[$x] = $result['value_c'];
                $x++;
            }
        //lets get all the options for
        print_r($_userLoaders);//this part prints what it should
scanArray();
}

хорошо, я свернул приведенный выше код, чтобы показать вам, что происходит.Довольно большая функция get_user_loaders() прекрасно работает.Он извлекает данные из таблицы в базе данных и возвращает то, что должен.Во-вторых, это делает массив из этого.Опять же, эта часть прекрасно работает.Когда вызывается метод print_r(), он печатает то, что должен, вот пример того, что он печатает:

Array ( [0] => tableValue )

да, на данный момент он имеет только одно значение, обратите внимание, что это значение может отличаться отнет значений до 100 значений, поэтому я использую массив.В этом случае я тестирую его с одним значением.

Теперь, когда я вызываю scanArray(), значения не отображаются.

функция scanArray() отображает следующее:

0
value: 

так что я не понимаю, почему он распечатывает, но не отображает функцию?Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 11 марта 2012

Ваша проблема в том, что переменная $_userLoaders объявлена ​​вне функции, а функция scanArray ничего не знает об этом. Вам нужно либо передать эту переменную в качестве параметра:

function scanArray($_userLoaders) {
    ...
}

с вызовом в конце

scanArray($_userLoaders);

или альтернативно объявить переменную как global внутри функции:

function scanArray($_userLoaders) {
    global $_userLoaders;
    ...
}
1 голос
/ 11 марта 2012

Это было бы потому, что $ _userLoaders не равно ничему внутри вашей функции scanArray ().Хотя это не очень хорошая практика, вы можете добавить строку:

global $_userLoaders;

к вашей функции scanArray () и любой другой функции, которая использует эту глобальную переменную, и она должна работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...