2013-04-20 45 views
-1

例如...爲什麼php中的類函數不需要分號?

public function processRowSet($rowSet, $singleRow = false){ 
    $resultArray = array(); 
    while($row = mysql_fetch_assoc($rowSet)){ 
     array_push($resultArray, $row); 
    }; 

    if ($singleRow === true){ 
     return $resultArray[0]; 
    }; 

    return $resultArray; 
} 
...and then the next line continues without an issue 

當我第一次開始OOP PHP,我做了把一個分號結束的錯誤,我花了大約一個小時,以弄清楚什麼是錯的。

感謝您的幫助!

+6

嗯,whiles和ifs也不需要分號。 – BoltClock 2013-04-20 03:08:58

+0

我不確定你會在哪裏看到在任何示例或教程中的分號。正如螺栓所說 - 同樣的時間和時間。我不能相信它的工作原理 – 2013-04-20 03:10:45

+0

有'function'關鍵字標識該行然後爲什麼需要另一個? – 2013-04-20 03:26:58

回答

2

不同的是報表和表達式:

  • if語句,而語句,函數等等都是陳述它不需要被分號終止。
  • 實際命令是表達式(即$foo = bar())。獨立表達式需要分號,可能因爲它們沒有大括號來表示表達式結束。

PHP借用這個語法從C

5

爲什麼?

因爲PHP編程語言的作者設計了這樣的語言。

當你在PHP創建一些代碼如下過程發生:

  1. 預解析器解析您的文件,尋找語法錯誤。
  2. 解析器解析您的文件,查找運行時錯誤。
  3. 該文件的內容更改爲彙編代碼。
  4. 彙編代碼變成機器碼,然後運行你的程序。

編程語言的作者讓解析器在語句後允許分號,這就是爲什麼你被允許這樣做。 (他們使用括號代替)。

某些編程語言要求您使用分號,因爲解析過程可能很難實現。

0

許多編程語言不需要結束語句,即。 ';'在函數塊之後,或者其他類型的塊語句(如if,for,while)之後。由於塊已經被限制在{}中,所以我們沒有用終止符來定義塊的結尾。這是由於語言解析器/編譯器正在執行代碼。

1

總之,你永遠需要一個分號塊右括號之後。你的代碼應該是這樣的:

public function processRowSet($rowSet, $singleRow = false){ 
    $resultArray = array(); 
    while($row = mysql_fetch_assoc($rowSet)){ 
     array_push($resultArray, $row); 
    } 

    if ($singleRow === true){ 
     return $resultArray[0]; 
    } 

    return $resultArray; 
} 

分號本身被認爲是一個空語句(什麼都不做)。這就是爲什麼一個常見的錯誤是寫這樣一個循環:

for ($a=0; $a=10; $a++); 
    print $a; 

分號後的循環是什麼也不做的命令,它會執行(無)10次,然後打印出的「11」。這相當於寫作:

for ($a=0; $a=10; $a++) { 
    ; // do nothing 
} 
print $a; 
相關問題