php从函数推送到数组

问题描述 投票:1回答:3

大家好日子!

我需要用其他数组填充“全局”数组。作为一个例子,我写了这个函数:

<?php
function f($ar=array(), $gl=array()){
    $gl[0]=array($ar[1]);
}
$globals=array();
$array_example=array('foo', 'bar');
f($array_example, $globals);
print_r($globals); //$globals is empty!
?>

请帮帮我。我无法理解为什么var $ globals是空的。

谢谢!

php arrays function push
3个回答
1
投票

我认为你应该使用by reference传递数组&

function f($ar = array(), &$gl = array())
{
    $gl[0] = array($ar[1]);
}

$globals = array();
$array_example = array('foo', 'bar');
f($array_example, $globals);
print_r($globals);

会给你:

Array
(
    [0] => Array
        (
            [0] => bar
        )

)

Demo


0
投票

首先,您应该修改function以返回值,并为要打印的值指定返回值。你是打印$global,它是一个空的array。所以你的代码应该是这样的。

<?php
    function f($ar = array(), $gl = array()){
        $gl[0] = array($ar[1]);
        return $gl;
    }
    $globals=array();
    $array_example=array('foo', 'bar');

    $globals = f($array_example, $globals);
    print_r($globals); 

    // prints out Array ( [0] => Array ( [0] => bar ) )
?>

0
投票

函数始终适用于局部变量,并且您希望将其局部变量范围用于函数之外。请查看下面的代码,希望对您有所帮助

function f($ar=array(), $gl=array()){
    return array($ar[1]);
}
$globals=array();
$array_example=array('foo', 'bar');
$tmpArray = f($array_example, $globals);
$globals[0]=$tmpArray;
print_r($globals); 
© www.soinside.com 2019 - 2024. All rights reserved.