php逻辑题
⑴ php的一个程序逻辑问题
function show_all_class($f_id = 0){
global $arr,$k;
for($i=0;$i<count($arr);++$i){
if($arr[$i][1]==$f_id)
{$str=leadStr($k++);
这儿使用$i之前+1 所以 不会出现当$i=0时,$arr[0][1]==$f_id的情况 而是$arr[1][1]==$f_id也就是数据库查出的 row[f_id]==0 就执行以下代码 不过$k=0运行还是后 我们看下面 有个函数调用自身的过程 show_all_class($arr[$i][0]); 也就是show_all_class($arr[1][0]); 不管你$k有没被调用 运行后$k==0 这样leadstr方法中第一个传入去的$k应该是0 而$k被用后下面函数show_all_class(); 会递加1 我不知道你数据库传进的数据是什么 你传过来的值带进去 按这逻辑运行下 理解下函数的递归 你就会明白了 不过这代码写得太不专业了 很乱 而且很不标准
⑵ php中的逻辑判断问题
php里有2个等于比较符,== 和 ===
对于前面的等号,会判断并转化为相同的类型后再进行比较,
比如你的代码: 0 == "a",会先把字符串a转化为数值,因为字符串里没有数字,所以"a"转换后就是0, 0==0当然是true了
同理,"1" == "01" 会自动判断有数字,然后把前后2个字符串都转化为数字进行比较,所以也是true。
同样的问题还有: 0 == ""; 0 == false; 这些都是true
而 === 就不会,该比较符必须类型相同,类型不同,直接返回false,
比如 0 === "0" 会返回false
在实际工作中,建议避免使用 ==,统一使用 ===
⑶ 关于PHP的逻辑运算
呵呵~~正如前面这位大哥说的~~
$c的值已经是bool型的了,所以在后面与$d比较的时候,php会先将$d的值转换为bool型的,6也就是true了,所以$c和$d相等了~~
⑷ php实现逻辑题
那第 1 头是隔过去的话就永远是第 1 头活着,
从第 1 头杀的话就是第 994 头活着
$array=array();
for($i=1;$i<=1000;$i++){
$array[]=$i;
}
$a=digui($array);
echo$a[0];
functiondigui($arr){
if(count($arr)>1){
for($x=0;$x<=count($arr)+2;$x+=2){
unset($arr[$x]);
}
$arr=array_merge($arr);
$arr=digui($arr);
}
return$arr;
}