関数に配列を渡す

関数にパラメータとして渡した配列を操作します。

プログラムの作成

Func_AryPara.php のソースコードを utf-8(BOM 無し)でタイプして C:\TMP\ に格納して下さい。
<?php
function func($ary)
{   $ary[1]= 7;
    print_r($ary);
}

$ary = array( 3, 5, 4 );
func($ary);
print_r($ary);
?>

【実行画面】
コマンドプロンプトを起動して Func_AryPara.php をコンパイルします。
パスが通っているので C:\TMP のディレクトリ上操作します。
C:\TMP>php Func_aryPara.php
Array
(
    [0] => 3
    [1] => 7
    [2] => 4
)
Array
(
    [0] => 3
    [1] => 5
    [2] => 4
)

プログラムの説明

  1. func() 関数に配列のパラメータを渡し、直接 $ary[1] の値を書き換えてみました。
    func() 関数で印字すると 5 が 7 に置き換わっています。
    C:\TMP>php Func_aryPara.php
    Array
    (
        [0] => 3
        [1] => 7
        [2] => 4
    )
    
  2. 関数から戻って印字すると $ary は元のままでした。
    パラメータで渡した $ary を変更しても元の配列には反映しないようです。
    Array
    (
        [0] => 3
        [1] => 5
        [2] => 4
    )
    

プログラムの作成

Func_AryPara.php のソースコードを utf-8(BOM 無し)でタイプして下さい。
<?php
function func($ary)
{   array_push($ary, 1);
    array_unshift($ary, 2);
}

$ary = array( 3, 5, 4 );
func($ary);
print_r($ary);
?>

【実行画面】
コマンドプロンプトを起動して Func_AryPara.php をコンパイルします。
C:\TMP>php Func_aryPara.php
Array
(
    [0] => 3
    [1] => 5
    [2] => 4
)

プログラムの説明

  1. func() 関数に配列のパラメータを渡し、直接 push, unshift してみました。
    function func($ary)
    {   array_push($ary, 1);
        array_unshift($ary, 2);
    }
    
  2. 関数から戻って印字すると $ary は元のままでした。
    パラメータで渡した $ary を変更しても元の配列には反映しないようです。
    Array
    (
        [0] => 3
        [1] => 5
        [2] => 4
    )
    

プログラムの作成

Func_AryPara.php のソースコードを utf-8(BOM 無し)でタイプして下さい。
<?php
function func($ary)
{   $wk= $ary;
    array_push($wk, 1);
    array_unshift($wk, 2);
    return $wk;
}

$ary = array( 3, 5, 4 );
print_r(func($ary));
?>

【実行画面】
コマンドプロンプトを起動して Func_AryPara.php をコンパイルします。
C:\TMP>php Func_aryPara.php
Array
(
    [0] => 2
    [1] => 3
    [2] => 5
    [3] => 4
    [4] => 1
)

プログラムの説明

  1. この関数は $ary を $wk で受け取って、$wk に push, unshift して関数値としてリターンします。
    function func($ary)
    {   $wk= $ary;
        array_push($wk, 1);
        array_unshift($wk, 2);
        return $wk;
    }
    
  2. リターン値を印字すると、push, unshift した結果が印字されました。
    Array
    (
        [0] => 2
        [1] => 3
        [2] => 5
        [3] => 4
        [4] => 1
    )
    

前田稔の超初心者のプログラム入門
PHP Program