LoginSignup
0
0

More than 3 years have passed since last update.

PHP 値渡し

Last updated at Posted at 2020-06-25

値渡し

値をコピーして渡しているため、元の変数に影響を与えない。

関数

関数値渡し
<?php

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

plusOne($tar);

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

関数は引数を受け取ったあと、そのコピーを作って処理をする

foreach

基本

  • ループ回数
    • 要素の数と一致する。
    • 下記のループ回数=$valueの数
  • 値渡し
    • \$keyと$valueはループごとに値が変わる。
    • 値をコピーしているため、元の変数($arr)に影響を与えない
foreach基本
<?php

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

値渡し

foreach値渡し
<?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]);
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0