ホームページ > バックエンド開発 > PHPチュートリアル > 引用符で配列を渡すPHP関数

引用符で配列を渡すPHP関数

WBOY
リリース: 2016-06-13 12:17:22
オリジナル
919 人が閲覧しました

PHP 関数 配列の参照渡し

達人様、「PHP 初心者から達人まで」で、配列変数を参照渡しと言いますが、配列の最初の要素のアドレスだけが渡されます。したがって、関数を終了した後は、最初の要素に対する変更のみが有効になります。次のコードを見てください。配列全体のすべての要素が変更されています。なぜ?


/**
* @author blog.anchen8.net
* @copyright 2015
*/

// 参照によってパラメータをテスト送信する

function changeName(&$name )
{
$name='Xiao HuiHui';
}
$girl='Mo';
echo '

関数を呼び出す前の私の名前は:' でした。 $girl;

changeName($girl);
echo'

関数を呼び出した後の私の名前は '.$girl;


// テスト配列パラメータを参照で送信します

function addPrice(&$price)
{
$price[0] =20;
$price[1] =30;
$price [2] =25;
}

関数discount(&$price)
{
foreach ($price as $key=> $aa)
{
$aa*=.8;
$price[$key]*=.8;
}
}

関数priceSet(&$price)
{
$価格[0]=20;
$price[1]=30;
$price[2]=25;
}

echo '

';

$price_a=array(100,29,30);

echo'

割引前の価格は ';
var_dump($price_a);

割引($price_a);

echo '

割引後の価格は ';
var_dump($price_a);

$price_a=array(100,29,30) ;
addPrice($price_a);
echo '

追加後の価格は ';
var_dump($price_a);


$price_a=array(100) ,29,30);
priceSet($price_a);
echo '

設定後の価格は ';
var_dump($price_a);


echo '

';
function setInfo (&$people)
{
$people['name']='MoMomo';
$people['age']=20;
$people['hobby']='読書';
}
$gril=array('name'=>'Xiao Mo MO','age'=>18,'hobby'= >'Studing');

関数を呼び出す前に '

をエコーし​​、値は ';
var_dump($gril);
setInfo($gril);
echo '

関数を呼び出した後の配列の値は ';
var_dump($gril);

?>

実行結果:
関数、私の名前は: Mo

関数を呼び出した後の私の名前は: Xiao HuiHui


割引前の価格は array(3) { [0]=> (100) [1]=> int(29) [2]=> int(30) }

割引後の価格は array(3) { [0]=> [1]=> float(23.2) [2]=> float(24) }

追加後の価格は array(3) { [0]=> => int(59) [2]=> int(55) }

設定後の価格は array(3) { [0]=> int(20) [1]=> int(30) [2]=> int(25) }


関数を呼び出す前の値は array(3) { ["name"]=> Xiao Mo MO" ["age"]=> int(18) ["hobby"]=> string(7) "勉強" }

関数を呼び出した後、配列の値はarray(3) ) { ["名前"]=> string(6) "モモ" ["年齢"]=> int(20) ["趣味"]=> string(7) "読書" }
------解決策----------------------
作者はそれが当たり前だと思っていませんか?
このような学問的態度で書かれた本を読んでもいいでしょうか?
------ソリューションのアイデア----------------------
「初心者からマスターまでの PHP」 、配列変数を参照によって渡す場合、配列の最初の要素のアドレスのみが渡されます。 そのため、関数を終了した後は、最初の要素への変更のみが有効になります。
赤い部分は明らかに間違っています。

本を読んだ後、実践して検証してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート