如何解决这个棘手的PHP函数任务?

时间:2013-05-23 16:53:04

标签: php arrays

这个有点难以解释,但我会尽力说清楚。

我怎样才能这样做,这样我可以在函数多次调用完成后将循环内的数组的所有元素插入到一个新数组中?

例如,如果在循环内多次调用此函数。在完成函数调用之后,我应该怎么做将var_dump显示的array1,array 2,array3合并到一个数组中,以便新数组$ array_total在使用array_merge之后具有array1,array2和array3的元素?一个例子将不胜感激!

<?php
function data($param1, $param2) {
    $new_array = array();
    echo $param1."-".$param2;
    foreach($products as $key => $value) {
        array_push($new_array,$value); // inserts all the values of array $products into new array $new_array everytime the function is called.
    }
    var_dump($new_array); // this will generate will display array(1), array(2) and array(3) if the function below has been called 3 times for example .
}

foreach($form as $form_id => $form_title) {
    data($form_id,$form_title);
}
?>

2 个答案:

答案 0 :(得分:4)

使用一个类,请不要使用全局变量:

class List {

 private $list = array();

 public function addList($listToAdd) {
  foreach($listToAdd as $element) {
   $this->list[] = $element;
  }
 }

 public function getList() {
  return $this->list;
 }

}

//TEST
$list = new List();
$list->add(array(2,3));
$list->add(array(6,5));

$listTogether = $list->getList();
var_dump($listTogether);

答案 1 :(得分:-4)

您可以将插入的数据存储在全局变量中(而不是每次调用函数时实例化一个新数组)。代码可能如下所示:

<?php
$global_array = array();

function data($param1, $param2){
    global $global_array;   // <-- reference the global variable '$global_array'
                            // (omitting this will create a new, empty, local variable)
    forEach ($products as $key => $value) {
        $global_array[] = $value;
    }
}

forEach ($form as $form_id => $form_title) {
    data($form_id, $form_title);
}

另请参阅此 short demo

有关PHP中变量范围以及关键字“global”的使用的更多信息,请查看 the docs