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;
}