$array=array('1','1');
foreach($array as $k=>$v)
{
$v=200;
}
print_r($array);
这道题的答案是Array ( [0] => 1 [1] => 1 ) 为什么? 求解,如果你要回答是直接打印数组的话,那么:
$array=array('1','1');
foreach($array as $k=>$v)
{
$array[$v]=200;
}
print_r($array);的结果为什么又是Array ( [0] => 1 [1] => 200 ) 呢
1.
$array=array('1','1');
foreach($array as $k=>$v)
{
$v=200;
}
print_r($array);
å¨è¿æ®µä»£ç ï¼foreachéåç»å®ç array æ°ç»ãæ¯æ¬¡å¾ªç¯ä¸ï¼å½ååå çå¼è¢«èµç» $vï¼é®åä¹ä¼å¨æ¯æ¬¡å¾ªç¯ä¸è¢«èµç»åé $kã
è¿ç§èµå¼æ¯ä¸ç§ âæ·è´â èµå¼ï¼ä¹å°±æ¯è¯´ï¼$v æ¯ array æ°ç»ä¸æ个åå çå¯æ¬ï¼æ´è¿ä¸æ¥è¯´ï¼$v ä¸ array æ°ç»ä¸æ个åå ï¼é¤äºå¼ç¸åä¹å¤ï¼æ²¡æå ¶ä»çå ³ç³»ãå æ¤ï¼ $v=200; è¿å¥ä»£ç åªæ¯ä¿®æ¹äº $vçå¼ï¼è对array æ°ç»æ²¡ä»»ä½å½±åã
å ¶å®ä¹å°±æ¯ç¼ç¨è¯è¨ä¸å½æ°åæ°çâå¼ä¼ éâä¸âå¼ç¨ä¼ éâçæ¦å¿µåºå«ã
ä½ä¸ºå¯¹æ¯ï¼ä»¥ä¸çä¾åå¯è½æ´æ帮å©ä½ ç解 å¼ä¼ é ä¸ å¼ç¨ä¼ é çåºå«ï¼
$array=array('1','1');
foreach($array as $k=>&$v) //注æè¿å¥ï¼$våé¢å¤äºä¸ª&
{
$v=200;
}
print_r($array);
è¿è¡ç»æï¼ Array ( [0] => 200 [1] => 200 )
2.
$array=array('1','1');
foreach($array as $k=>$v)
{
$array[$v]=200;
}
print_r($array);çç»æ为ä»ä¹åæ¯Array ( [0] => 1 [1] => 200 ) å¢ï¼
è¿ä¸ªä¹å¾å¥½ç解ï¼è½ç¶ä½ å¨foreachééåäºæ°ç»ï¼ä½ä½ 并没æç¨ $aray[$k] = 200 æ¥è¿è¡èµå¼ï¼èæ¯ç¨ $v ï¼
æ以ï¼å½è®¿é®å°ç¬¬1个å ç´ æ¶ï¼$v = '1'ï¼é£ä¹ $array[$v]=200 çæ§è¡ï¼å®é ä¸ä¹å°±æ¯ï¼ $array['1']=200ï¼ä¹å°±æ¯ç¬¬2个å ç´ è¢«æ¹æ200ã
å½è®¿é®ç¬¬2个å ç´ æ¶ï¼è¿æ¯ $v = '1'ï¼ä»æ§æ¯ $array['1']=200ã
æ以 $array ç第2个å ç´ è¢«ä¿®æ¹äº2次ï¼è第1个å ç´ æ²¡ä¿®æ¹è¿ã
æ示ï¼å¨phpè¯è¨éï¼æ°ç»ä¸æ ä»0å¼å§è®¡æ°ï¼è·cè¯è¨ä¸æ ·ã追é®
$array=array('1','1');
foreach($array as $k=>$v)
{
$v=200;
}
print_r($array);
å¨è¿æ®µä»£ç ï¼foreachéåç»å®ç array æ°ç»ãæ¯æ¬¡å¾ªç¯ä¸ï¼å½ååå çå¼è¢«èµç» $vï¼é®åä¹ä¼å¨æ¯æ¬¡å¾ªç¯ä¸è¢«èµç»åé $kã
è¿ç§èµå¼æ¯ä¸ç§ âæ·è´â èµå¼ï¼ä¹å°±æ¯è¯´ï¼$v æ¯ array æ°ç»ä¸æ个åå çå¯æ¬ï¼æ´è¿ä¸æ¥è¯´ï¼$v ä¸ array æ°ç»ä¸æ个åå ï¼é¤äºå¼ç¸åä¹å¤ï¼æ²¡æå ¶ä»çå ³ç³»ãå æ¤ï¼ $v=200; è¿å¥ä»£ç åªæ¯ä¿®æ¹äº $vçå¼ï¼è对array æ°ç»æ²¡ä»»ä½å½±åã
å ¶å®ä¹å°±æ¯ç¼ç¨è¯è¨ä¸å½æ°åæ°çâå¼ä¼ éâä¸âå¼ç¨ä¼ éâçæ¦å¿µåºå«ã
ä½ä¸ºå¯¹æ¯ï¼ä»¥ä¸çä¾åå¯è½æ´æ帮å©ä½ ç解 å¼ä¼ é ä¸ å¼ç¨ä¼ é çåºå«ï¼
$array=array('1','1');
foreach($array as $k=>&$v) //注æè¿å¥ï¼$våé¢å¤äºä¸ª&
{
$v=200;
}
print_r($array);
è¿è¡ç»æï¼ Array ( [0] => 200 [1] => 200 )
2.
$array=array('1','1');
foreach($array as $k=>$v)
{
$array[$v]=200;
}
print_r($array);çç»æ为ä»ä¹åæ¯Array ( [0] => 1 [1] => 200 ) å¢ï¼
è¿ä¸ªä¹å¾å¥½ç解ï¼è½ç¶ä½ å¨foreachééåäºæ°ç»ï¼ä½ä½ 并没æç¨ $aray[$k] = 200 æ¥è¿è¡èµå¼ï¼èæ¯ç¨ $v ï¼
æ以ï¼å½è®¿é®å°ç¬¬1个å ç´ æ¶ï¼$v = '1'ï¼é£ä¹ $array[$v]=200 çæ§è¡ï¼å®é ä¸ä¹å°±æ¯ï¼ $array['1']=200ï¼ä¹å°±æ¯ç¬¬2个å ç´ è¢«æ¹æ200ã
å½è®¿é®ç¬¬2个å ç´ æ¶ï¼è¿æ¯ $v = '1'ï¼ä»æ§æ¯ $array['1']=200ã
æ以 $array ç第2个å ç´ è¢«ä¿®æ¹äº2次ï¼è第1个å ç´ æ²¡ä¿®æ¹è¿ã
æ示ï¼å¨phpè¯è¨éï¼æ°ç»ä¸æ ä»0å¼å§è®¡æ°ï¼è·cè¯è¨ä¸æ ·ã追é®
谢谢,ææç½äº.ä½æ¯å¯¹ä½ ç举ä¾ä¸å¤ªæ,ä½ ç举ä¾æ¯å¼ä¼ éå§? "$k=>&$v"è¿ä¸ªè¯å¥æ¯æä¹ä¼ éçå¢?
追ç1. æ举çä½ä¸ºå¯¹æ¯çä¾åï¼æ¯ å¼ç¨ä¼ é ä¾åã
2. "$k=>&$v"è¿ä¸ªè¯å¥æ¯æä¹ä¼ éçï¼è¿ä¸ªä½ å¯ä»¥åä»ç»ççphpè¯è¨å¯¹ foreach ç说æï¼å°±å¯ä»¥ç解äºã
温馨提示:答案为网友推荐,仅供参考
第1个回答 2012-04-09
你第一个foreach里面,修改了$v的值,但是对数据不影响。实际上它只是一个临时的变量,通过foreach赋给了$v,而第二个foreach却修改了数组中索引为1的值。这没问题啊?