增加網址:
文章備註、標題(會記錄下來,但是暫時不會顯示):
[綜合]無題 無名 ID:JfL5VdhU 17/09/22(五)16:30:21 No.9903662
評分:0, 年:0, 月:0, 週:0, 日:0, [+1 / -1] 最後更新:2017-09-22 03:39:39
附圖
☺程式廚的午茶教學時間☺
大家一起來,輕輕鬆鬆、快快樂樂的學習PHP程式吧~
https://medium.com/@KomicaTrollCoder
測試網站:
https://code.sololearn.com/wAQh3FwVdYGO/#php

大家午安~
今天要介紹的東東,對於洗板廚來講可是非常的實用喔,那是就大名鼎鼎的「for」迴圈!

迴圈是一個什麼樣的概念呢?
其實非常的簡單喔~
那就是反覆不斷的一直做一直做一直做一直做一直做....

for ( $i = 0; $i < 10; $i++ ) {
 echo $i;
}

大家看到上面「for」後面的括號,這裡就是讓 for 迴圈「重覆工作」的各種設定喔~
括號裡面要拆成三個部份來看
1.「$i = 0;」
2.「$i < 10;」
3.「$i++」
第一個很簡單,我們在之前有學過,就是把 0 放進 $i 這個變數裡~
第二個是「讓迴圈停止重覆工作的條件」喔~
這邊是 $i 如果小於 10,那迴圈就停住啦!
這就好像當兵時班長叫你開始做伏立挺身,大多數都會先跟你說,你這次要做幾下,做完了就可以休息。
for 迴圈也是要跟他說清楚他要做幾下才能休息的喔~
至於第三個的「$i++」,這個比較難以理解一點,這是代表「告訴 $i 以後每次工作後,都自己加 1」的意思喔!

想像一下粗乃丸在你面前,你跟粗乃丸說,你去拿張紙,之後我揍你一拳,你就在紙上作紀錄,紀錄我揍了你幾拳~
那這個在括號內的「$i++」就是在「告訴粗乃丸被揍一拳要在紙上紀錄一次」喔!

for ( $i = 0; $i < 10; $i++ ) {
echo "揍粗乃丸一拳";
}

大家可以去試試看,到底揍了幾拳呢~
這邊要注意的是,粗乃丸是被揍了一拳「之後」才會在「$i 這張紙上加 1」喔!
所以迴圈在「第一次」揍粗乃丸一拳時,$i 還是 0 次喔~
是揍完了(也就是迴圈裡的程式全都執行完畢了),$i 才會自己加上 1 喔~

是不是很好丸呢!
大家一起來試試揍粗乃丸吧!

丸!
無題 無名 ID:TV7JOv1k 17/09/22(五)16:31:27 No.9903671
感謝程式廚
無題 無名 ID:j0E9Z1As 17/09/22(五)16:31:40 No.9903672
>這邊是 $i 如果小於 10,那迴圈就停住啦!
無題 無名 ID:2GLbNX7M 17/09/22(五)16:34:39 No.9903685
別再交這種幼稚園課程了

直接交物件導向吧

媽的出去工作還再用迴圈會被人笑死
無題 無名 ID:j0E9Z1As 17/09/22(五)16:35:52 No.9903691
回覆: >>9903711
>>9903685
特定需要重新取回index的情況還是可以用for
無題 無名 ID:B2.ggWwM 17/09/22(五)16:36:59 No.9903701
回覆: >>9903711
>>9903685
這麼大聲不如你也來寫教學啊
無題 無名 ID:7B4okoO6 17/09/22(五)16:38:13 No.9903707
我幼稚園島民啦

$i++ 為什麼是加1阿
為什麼不是$i+
想要加二又要怎麼寫呢
無題 無名 ID:5xJBcSTE 17/09/22(五)16:39:25 No.9903711
回覆: >>9903822
>>9903691
>>9903701
你付錢喔?
我等下班等地好好的
要浪費時間來教連程式都不會寫的賤民?

將心比心好嗎= =?
無題 無名 ID:5xJBcSTE 17/09/22(五)16:40:17 No.9903717
回覆: >>9903757
>>9903707
真的想學就去看c
在這邊看垃圾混淆視聽= =
無題 無名 ID:y7Dae5Kw 17/09/22(五)16:43:56 No.9903744
回覆: >>9903851
菜逼巴玩一下
http://cpp.sh/9v7u
無題 無名 ID:JfL5VdhU 17/09/22(五)16:44:27 No.9903747
回覆: >>9903771
>>9903707
其實這只是一種寫法而已
先不用去細究太多喔~
基本上「++」的寫法是從C語言來的沒有錯
無題 無名 ID:xLqLuJ6o 17/09/22(五)16:44:33 No.9903750
回覆: >>9903771
>>9903707
i+=2 或是 i=i+2
i++其實就是 i=i+1簡化而已
太常用了所以給她一個i++的寫法讓大家偷懶
無題 無名 ID:pistLxoM 17/09/22(五)16:45:30 No.9903757
回覆: >>9903763
>>9903717
垃圾罵人垃圾wwwwwwww
無題 無名 ID:JfL5VdhU 17/09/22(五)16:47:17 No.9903763
>>9903757
別這樣別這樣
想丸的就一起丸
不想丸的也不用勉強~
大家喝杯茶
輕鬆一下
看看笑笑就好囉~
無題 無名 ID:7B4okoO6 17/09/22(五)16:48:25 No.9903771
無題 無名 ID:j0E9Z1As 17/09/22(五)16:55:13 No.9903803
>這邊是 $i 如果小於 10,那迴圈就停住啦!

結果還是沒有人來修正這個。
反正就這樣吧(攤手)
無題 無名 ID:kaZrvib2 17/09/22(五)16:56:43 No.9903809
回覆: >>9903842
>>9903707
我C廚啦
C語言就是定義有個符號叫 ++ 效果是加一,不是 + 也不是 +++
至於為什麼不用 + ,應該是因為 + 已經有其他意義了(普通的加法)
為了避免混淆,就把加一這個功能定成 ++

至於普通的乘法 * 為什麼就可以身兼指標號
主要差別在於指標號只能放左邊,加一可左可右(++i跟i++都有效,只是習慣上比較喜歡用i++)
而且能加指標號的東西(指標)不能拿去餵乘法,但能加一的東西就可以做加法
所以指標號不會跟乘法混淆,才可以一個符號兩用

加二沒有特定縮寫,你可以用另一個語法寫成i+=2
i=i+1 跟 i+=1 跟 ++i 跟 i++ 是一樣的 (如果你不考慮回傳值的話)
i=i+2 跟 i+=2 也是一樣的
無題 無名 ID:B2.ggWwM 17/09/22(五)17:00:06 No.9903822
>>9903711
等下班就好好抱著你神聖至上的C等下班
別人熱心教學不需要你在旁邊大小聲
無題 無名 ID:H8U/g6HM 17/09/22(五)17:01:08 No.9903827
回覆: >>9903866
原PO最一開始沒有給hello world完整的碼
只給兩行菜逼巴哪知道要放哪裡= =
覺得要教卻沒給能夠成功編譯的代碼滿怪的

直接複製出錯才發現你網頁""用的是全形 痾
無題 無名 ID:j0E9Z1As 17/09/22(五)17:04:49 No.9903842
回覆: >>9903878
>>9903809

其實 i++ 與 ++i 不同。

再次強調,牛津鞋不是雕花鞋。
無題 無名 ID:XGQ5yY1Q 17/09/22(五)17:06:08 No.9903851
>>9903744
揍粗乃丸10拳 !!!!
無題 無名 ID:Vn9vPiTQ 17/09/22(五)17:07:50 No.9903861
回覆: >>9903883
>>只給兩行菜逼巴哪知道要放哪裡= =
像這樣喔
https://ideone.com/u8IvsN
無題 無名 ID:JfL5VdhU 17/09/22(五)17:09:23 No.9903866
>>9903827
第二個連結有可以測試程式的地方喔~
至於網頁的程式全形問題我晚點再看一下修正
medium有點怪怪的
無題 無名 ID:kaZrvib2 17/09/22(五)17:10:56 No.9903878
>>9903842
啊我不就括號強調不考慮回傳值了...

況且現在i++ ++i很少用在有收回傳值的地方了
閱讀不易又沒比較有效率,只是省一行看起來比較炫砲罷了
如果一行裡用兩次以上還會隨編譯器改變實際執行效果咧
不如通通獨立寫在外面
反正菜逼八只要不知道他們有回傳值,就不會把他們用在能用反的地方
無題 無名 ID:H8U/g6HM 17/09/22(五)17:12:18 No.9903883
回覆: >>9903905
>>9903861
我的意思只是要說,連基本的外框要打什麼都沒講
只給了兩行碼,當新手可以冥想出答案喔
新手看了滿頭問號,因為複製程式碼跑不出來
老手根本不會去看,那到底是要寫給誰看

就好像C中main沒講,直接叫你跑printf跑出一大堆錯誤滿頭問號
無題 無名 ID:d68..GDo 17/09/22(五)17:13:56 No.9903893
回覆: >>9903957
寫錯了吧 是$i如果不小於10就停住
無題 無名 ID:XqWfhlXo 17/09/22(五)17:16:56 No.9903905
>>9903883
我猜是這樣?
<?php
define("x", "hello world);
echo x;
?>
無題 無名 ID:H8U/g6HM 17/09/22(五)17:20:11 No.9903927
總之就是我推薦原Po可以補一篇最基本的
http://www.twhappy.com/index.php?action=show&no=101
像這篇一樣,不然講一堆都白講說實在
無題 無名 ID:kaZrvib2 17/09/22(五)17:21:36 No.9903936
回覆: >>9903955
說到++
麻煩有裝GCC以外的編譯器的人幫我編看看這個程式碼
[aa]
int i=3;
printf("%d %d %d\n",i++,i++,i++);
printf("%d %d %d\n",++i,i++,++i);
printf("%d %d %d\n",++i,++i,++i);
[/aa]
看執行出來是長怎樣
我用mingw(的G++)編出來是:
[aa]
5 4 3
9 7 9
12 12 12
[/aa]
GCC應該會一樣

然後麻煩看過這篇的人再也不要在同一行裡寫兩個以上的++了
無題 無名 ID:H8U/g6HM 17/09/22(五)17:24:20 No.9903955
>>9903936
我印象中最好不要像這樣打
同一行裡面出現一堆i++ ++i
丟到不同編譯器有不同答案
把這種東西從腦袋中移除吧
無題 無名 ID:NHb2sxXE 17/09/22(五)17:24:20 No.9903956
附圖
超可愛鯨頭!
無題 無名 ID:JfL5VdhU 17/09/22(五)17:24:21 No.9903957
>>9903893
對對 這個是語意錯誤
網頁會再修正下

謝謝喔~
無題 無名 ID:JfL5VdhU 17/09/22(五)17:31:45 No.9903991
關於那個 ++ 的語法
老實說風評的確是不太好~

新手蠻容易混淆的~
像之前就看過有朋友面試被考一題

$i = 3;
$i = $i+++$i++;
echo $I;

...
基本上考這沒什麼意思我覺得
也沒有人程式會這樣寫...

另外像Apple最新的程式語言Swift
就整個把++的寫法給砍囉~
做得還蠻超過的 www
無題 無名 ID:j0E9Z1As 17/09/22(五)17:43:57 No.9904047
附圖
>>9903991

>$i = 3;
>$i = $i+++$i++;
>echo $I;

你這是陷阱題吧
無題 無名 ID:xLqLuJ6o 17/09/22(五)17:47:24 No.9904065
>>9903991
所以這題應該是多少
9嗎?
無題 無名 ID:S76u4m06 17/09/22(五)17:52:33 No.9904091
>>9903991
> $i = $i+++$i++;
這樣寫code絕對被打槍
code review根本不可能給你過 以後怎麼維護啊
無題 無名 ID:kaZrvib2 17/09/22(五)17:54:12 No.9904103
>>9903991
如果我面試被考到這題
我會跟考官說這是個垃圾爛扣
建議上層當場開除寫出這個code的人

不過如果硬要問答案
根據上面的GCC邏輯
我想應該會是7
依執行順序拆開來會是:
temp0=3;
i=4;
temp1=4;
i=5;
i=temp1+temp0;


>>就整個把++的寫法給砍囉~
我是覺得應該把++的回傳值改成void,然後放左放右完全沒有差別
強迫你++只能獨立使用,就不會釀成災難
整個砍掉有點矯枉過正
無題 無名 ID:SQKrBL0U 17/09/22(五)18:08:40 No.9904185
i = i++ + i++;
在c中看到時的標準答案是:
面試中看到的話就把出題的人打到吐血
在程式碼裡看到的話就把寫出來的人打到吐血

實際答案是c最喜歡的UB,編譯器可以把你的硬碟格式化掉也可以