我是php新手,这个程序我不懂求解释
test
function 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的值变了,为什么键没变呢?我明明key和value都改了啊?
求指点,越详细越好
------解决方案--------------------问题1
是的,$cnt是全局的 ,但是你是在函数里面更改它的值,只在函数里面有效,函数外面无效.
问题2
你只能通过 array_walk 修改他的value , 去看看手册。
------解决方案--------------------问题1:我觉得$cnt是全局的,所以我认为cnt应该是3啊(我之前是学C++的)
与 C++ 不同,php 在函数中屏蔽一切外部变量
如在函数中使用外部变量,则需有 global (全局)声明
问题2:$states的值变了,为什么键没变呢?我明明key和value都改了啊?
在 array_walk 中不允许改变宿主的结构
改变 key 就是改变结构,所以是不允许做到的
改变 value 也只在传引用时有效
Statement:The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn