循环和回显时的PHP数组问题

时间:2012-03-10 22:39:56

标签: php arrays loops echo

我无法让阵列正常工作,让我告诉你这里的代码

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 个答案:

答案 0 :(得分:2)

您的问题是$_userLoaders变量在函数外声明,函数scanArray对此一无所知。您需要将该变量作为参数传递:

function scanArray($_userLoaders) {
    ...
}

最后的电话是

scanArray($_userLoaders);

或者在函数中声明变量为global

function scanArray($_userLoaders) {
    global $_userLoaders;
    ...
}

答案 1 :(得分:1)

那是因为$ _userLoaders不等于scanArray()函数中的任何内容。虽然这不是一个好习惯,但您可以添加以下行:

global $_userLoaders;

到您的scanArray()函数以及那个使用该全局变量的其他函数,它应该可以工作。