php数组在附加elts后为null


php array is null after appending elts

我在将项附加到数组时遇到问题。首先我初始化空数组,然后我想把elemnts放在里面。

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

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

那么,我做错了什么?

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"
  }
}

但是:

从技术上讲,最好的方法是使用参考:

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

对于您的案例来说,没有什么不同,但在长而复杂的代码中,它使想法更加清晰。