>백엔드 개발 >PHP 튜토리얼 > 小弟我是php新手,这个程序小弟我不懂求解释

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

WBOY
WBOY원래의
2016-06-13 13:01:08988검색

我是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 也只在传引用时有效
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사: 安插多条数据 다음 기사: PHP怎么调用动态URL