小弟我是php新手,这个程序小弟我不懂求解释

WBOY
Freigeben: 2016-06-13 13:01:08
Original
973 Leute haben es durchsucht

我是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 也只在传引用时有效
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage