ホームページ > バックエンド開発 > PHPチュートリアル > 兄さん、私はphpの初心者なので、このプログラムを理解していません。

兄さん、私はphpの初心者なので、このプログラムを理解していません。

WBOY
リリース: 2016-06-13 13:01:08
オリジナル
982 人が閲覧しました

私は php を初めて使用するため、このプログラムを理解できません。

について説明してください。 <頭>
テスト

関数 dealdata(&$value,&$key)
{
$value.="123";
$key.="456";
$cnt++;
}

$cnt = 0;
$states = array("a"=>"aa","b"=>"bb","c"=>"cc");

echo $cnt."
";
print_r($states);

array_walk($states,"dealdata");

echo $cnt."
";
print_r($states);

?>




質問 1: $cnt はグローバルだと思うので、cnt は 3 であるべきだと思います (以前に C++ を勉強しました)
質問 2: $states の値が変更されたのに、キーが変更されないのはなぜですか?明らかにキーと値を変更しましたか?
アドバイスをお願いします。詳しいほど良いです
-----解決策----------------------
質問 1
はい、$cnt はグローバルですが、関数内でその値を変更した場合、その値は関数内でのみ有効となり、関数外では無効になります。

質問 2
その値は array_walk を通じてのみ変更できます。マニュアルをお読みください。

-----解決策---------
質問 1: $cnt だと思いますはグローバルなので、cnt は 3 であるべきだと思います (以前に C++ を勉強しました)
C++ とは異なり、PHP は関数
内のすべての外部変数をマスクします。 関数内で外部変数を使用する場合は、グローバル宣言が必要です

質問 2: $states の値が変更されたのに、キーが変更されないのはなぜですか?明らかにキーと値を変更しましたか?
array_walk
ではホストの構造を変更することはできません キーを変更することは構造を変更することを意味するため、許可されません
値の変更は、参照渡しの場合にのみ有効です

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