当前位置:编程学习 > php >>

PHP编程的函数和WHILE用法问题。

<?function cmp($arg1,$arg2){if($arg1 == $arg2) return 0;return($arg1>$arg2)?-1:1;}$arr=array(3=>"a",2=>"b",1=>"c",4=>"b",0=>"e");usort($arr,cmp);while(list($key,$value)=each($arr)){echo "\$arr[$key]=$value;";}echo "<br>";?>
代码如上。不明白的地方有2点。a. 函数中 if($arg1 == $arg2) return 0;return($arg1>$arg2)?-1:1; 是不是少了个ELSE? 可以省略的吗? 这段代码在全文中用途是什么。b.while(list($key,$value)=each($arr)) 这段, $key和$value之前都是没有定义的, 为什么能引用, 而且值还是真。 
请高手指教。
追问:第2点明白。 只要是each($arr)有值的话该表达式就为真, 执行语句体,对吧。


关于函数cmp在全文中的用途, 烦请指教。 这段代码最看不明白的地方。 
答案:第一点,if($arg1 == $arg2) return 0;return($arg1>$arg2)?-1:1;
前一句if($arg1 == $arg2) return 0;意思是如果$arg1 == $arg2,就return 0;
return($arg1>$arg2)?-1:1;这一句是一个三元表达式,意思是如果$arg1>$arg2就return -1否则就return 1
当然,return($arg1>$arg2)?-1:1;等价与你说的ifesle结构。

第二点,并不是没有定义
list($key,$value)=each($arr)
list()函数本身就有定义的意思,而each就是一行一行拿数组中的值
这句代码的意思是,通过while,一行一行的拿数组中的值,并赋值给$key,$value
当然,while(list($key,$value)=each($arr))是等价与foreach($arr as $key=>$value)的

希望采纳,谢谢。
else是看情况可以省略的,至于你说的$key,$value在那里就算定义了。。只要有个$符号作前缀的都算是变量了,,除了系统自带的一些函数哈eg:$_POST[user];
高难度php

上一个:怎么学vb 和 PHP 学不懂
下一个:php不用localhost用ip地址怎么登陆

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,