私は 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
ではホストの構造を変更することはできません
キーを変更することは構造を変更することを意味するため、許可されません
値の変更は、参照渡しの場合にのみ有効です