-1

これを説明するのは少し難しいですが、わかりやすくするために最善を尽くします。

関数が複数回呼び出された後、ループ内の配列のすべての要素を新しい配列に挿入できるようにするにはどうすればよいですか?

たとえば、この関数がループ内で複数回呼び出された場合。array_merge を使用した後、新しい配列 $array_total が array1、array2、および array3 の要素を持つように、関数の呼び出しが終了した後、var_dump で示される array1、array 2、array3 を 1 つの配列にマージするにはどうすればよいですか? 例をいただければ幸いです。

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

2 に答える 2

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

この短いデモも参照してください。

PHP の変数のスコープとキーワード「global」の使用に関する詳細については、 docsを参照してください。

于 2013-05-23T17:01:26.070 に答える