array_push inside函数产生错误"期望参数1为数组,null给定.."

时间:2014-03-21 08:06:43

标签: php

为什么我收到此错误消息“警告:array_push()期望参数1为数组,null给定...”当我删除该函数并运行for循环时,它可以工作,但不在函数内部。为什么呢?

<?php

$arr = array();
function callme() {
    for ($x = 1; $x <= 10; $x++) {
        array_push($arr, $x);
    }
    return $arr;
}

callme();

print_r($arr);

?>

3 个答案:

答案 0 :(得分:1)

将数组$arr声明为全局

$arr = array();
function callme() {
    global $arr;
    for ($x = 1; $x <= 10; $x++) {
        array_push($arr, $x);
    }
    return $arr;
}

或者将$arr作为参数传递。

答案 1 :(得分:1)

你需要做以下两件事之一:

将$ array添加为函数参数并返回。

<?php

$arr = array();
function callme($array) {
    for ($x = 1; $x <= 10; $x++) {
        array_push($array, $x);
    }
    return $array;
}

$arr = callme($arr);

print_r($arr);

?>

如果您不喜欢退货,可以将数组作为参考......

<?php

$arr = array();
function callme(&$array) {
    for ($x = 1; $x <= 10; $x++) {
        array_push($array, $x);
    };
}

callme($arr);

print_r($arr);

?>

或在函数中定义$ arr als全局(最不需要,你只能使用一个数组)

<?php

$arr = array();
function callme() {
    global $arr;
    for ($x = 1; $x <= 10; $x++) {
        array_push($arr, $x);
    }
    return $arr;
}

callme();

print_r($arr);

?>

答案 2 :(得分:0)

有人需要学习一些关于变量范围的基础知识。

http://php.net/manual/language.variables.scope.php