附加elts后,php数组为null

时间:2013-11-28 18:21:26

标签: php arrays

我在将项目附加到数组时遇到问题。 首先,我初始化空数组,然后我想将元素放入其中。

但是,最后的结果是空数组。

$aditivs = array();

function handle_Aditiv($ArrVal){
  $id_aditiv = $ArrVal['id'];
  $code = $ArrVal['code'];
  $arrLocal = array();
  $arrLocal[] = $id_aditiv;
  $arrLocal[] = $code;
  $aditivs [] = $arrLocal;
 //var_dump($aditivs);
 echo "Adt : $id_aditiv,$code \r\n";
}

var_dump($aditivs); //this print out empty array

绝对:

$aditivs [] = $arrLocal;

我也使用了这个,但结果是相同的

array_push($aditivs, $arrLocal);

那我在哪里以及我做错了什么?

1 个答案:

答案 0 :(得分:0)

test.php的:

<?php 
$aditivs = array();


function handle_Aditiv($ArrVal){
    Global $aditivs;
    $aditivs[] = array($ArrVal['id'], $ArrVal['code']);
    return(0);
}

$arr = array('id'=>1, 'code'=>"code");
handle_Aditiv($arr);
var_dump($aditivs); 

 ?>

运行:

>php test.php

输出:

array(1) {
  [0] =>
  array(2) {
    [0] =>
    int(1)
    [1] =>
    string(4) "code"
  }
}

<强> BUT:

从技术上讲,最好的方法是使用reference

<?php 
$aditivs = array();


function handle_Aditiv(&$accumulator, $input){
    $accumulator[] = array($input['id'], $input['code']);
}

$arr = array('id'=>1, 'code'=>"code");
handle_Aditiv($aditivs, $arr);

var_dump($aditivs); 

?>

对于你的情况没有区别,但是在漫长而复杂的代码中,它使这个想法变得清晰。