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