【问题标题】:php push to array from functionphp从函数推送到数组
【发布时间】:2017-12-24 11:59:42
【问题描述】:

祝大家都有美好的一天!

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

<?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 是空的。

谢谢!

【问题讨论】:

  • 函数 f($ar=array(), &$gl=array()) --??
  • 你需要做什么?
  • 我需要用其他数组的值填充 $globals 数组。

标签: php arrays function push


【解决方案1】:

我认为您应该使用&amp; 传递数组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

【讨论】:

    【解决方案2】:

    首先,您应该修改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 ) )
    ?>
    

    【讨论】:

    • 不,先生。但是每个函数调用都会用一个新值填充数组。
    【解决方案3】:

    函数总是对局部变量起作用,并且你想使用它们的局部变量范围来超出函数。 看看下面的代码,希望对你有帮助

    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); 
    

    【讨论】:

    • 谢谢 :) 但是 $globals 的每个事件新索引是未知的。
    • $array_example 正在从 MySQL 循环获取数据
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多