PHP的传值调用

传递值

因为正在复制值并传递,所以不会对原始变量产生影响。

函数 shù)

<?php

$tar = 1;
function plusOne($tar){
    $tar++;
}

plusOne($tar);

var_dump($tar);  //int(1)

函数在接收参数后,会创建其副本并进行处理。

对于每一个

基础的

    • ループ回数

要素の数と一致する。
下記のループ回数=$valueの数

値渡し

\$keyと$valueはループごとに値が変わる。
値をコピーしているため、元の変数($arr)に影響を与えない

<?php

foreach ($arr as $key => $value) {
  //...code
}

传值

<?php

$arr = [
    0 => [
        'a' => 'あ',
        'b' => 'あ',
        'c' => 'あ',
    ],
    1 => [
        'd' => 'う',
        'e' => 'う',
        'f' => 'う',
    ],
];

foreach ($arr as $key => $value) {//2回ループ

    foreach ($value as $k => $v) {//6回ループ
        //$v = str_replace('あ','い',$v);
        //var_dump
        $value[$k] = str_replace('あ','い',$v);//※1 $vは'「あ」のまま'
        //var_dump
        $value[$k] = $v;//ここで元の配列を操作
        //var_dump
    }
    //var_dump
    $arr[$key] = $value;//ここで元の配列を操作
    //var_dump
}
    • var_dumpと書いてあるとこでvar_dumpしてみると理解が深まる

 

    • ※1:この記事上部の関数の値渡しをおさらい

関数(ここではstr_replace)に値を渡して処理した後は、返り値に処理後の内容が反映される

ある変数に処理をし、その変数を上書くときは、左辺と右辺に記載する変数を同じにするとバグが防げる

× \$value[\$k] = str_replace(‘あ’,’い’,\$v);
〇 \$value[\$k] = str_replace(‘あ’,’い’,\$value[$k]);

广告
将在 10 秒后关闭
bannerAds