Yahoo! 的 PHP 面試題目(第三部份)

若果你已經看過 Yahoo! 的 PHP 面試題目(第一部份)第二部份,請繼續觀看第三部份第十一至第十六題,其餘題目已經在第四部份轉載。每一部份的都會先列出題目,題解會寫在後面。

  1. 在一個類別內如何存取這個類別的特性及變改它的值?
  2. include 和 include_once 有什麼分別?require 又如何?
  3. 以下哪一個函式可以把瀏覽器轉向到另一個頁面?
    • redir()
    • header()
    • location()
    • redirect()
  4. 以下哪一個函式可以用來開啟檔案以便讀/寫?
    • fget()
    • file_open()
    • fopen()
    • open_file()
  5. mysql_fetch_row() 和 mysql_fetch_array() 有什麼分別?
  6. 下面的代碼用來做什麼?請解釋。
    $date='08/26/2003';
    print ereg_replace("([0-9]+)/([0-9]+)/([0-9]+)","\\2/\\1/\\3",$date); 

以下是 Matt Wilkin 提供的解答:

  1. 在一個類別內如何存取這個類別的特性及變改它的值?
    使用語句:$this->propertyName,例如:
     PHP |  copy code |? 
    1
    class myclass
    2
    {
    3
        private $propertyName;
    4
        public function __construct()
    5
        {
    6
            $this->propertyName = "value";
    7
        }
    8
    }
  2. include 和 include_once 有什麼分別?require 又如何?
    三者都是用來在腳本中插入其他檔案,視乎 url_allow_fopen 是否核准,這個檔案可以從系統內部或外部取得。但他們之間也有微細的分別:
    include():這個函式容許你在腳本中把同一個檔案插入多次,若果檔案不存在,它會發出系統警告並繼續執行腳本。
    include_once():它跟 include() 的功能相似,正如它的名字所示,在腳本的執行期間,有關檔案只會被插入一次。
    require():跟 include() 差不多,它也是用來在腳本中插入其他檔案,但若果檔案不存在,它會發出系統警告,這個警告會引致致命錯誤令腳本中止執行。
  3. 以下哪一個函式可以把瀏覽器轉向到另一個頁面?
    • redir()
      這不是一個 PHP 函式,會引致執行錯誤。
    • header()
      這個是正確答案,header() 用來插入卷頭資料,可以用來使瀏覽器轉向到另一個頁面,例如:
       PHP |  copy code |? 
      1
      header("Location: http://www.search-this.com/");
    • location()
      這不是一個 PHP 函式,會引致執行錯誤。
    • redirect()
      這不是一個 PHP 函式,會引致執行錯誤。
  4. 以下哪一個函式可以用來開啟檔案以便讀/寫?
    • fget()
      這不是一個 PHP 函式,會引致執行錯誤。
    • file_open()
      這不是一個 PHP 函式,會引致執行錯誤。
    • fopen()
      這是正確答案,fopen() 可以用來開啟檔案以便讀/寫,事實上這個函式還有很多選項,詳細資料請參閱 php.net
    • open_file()
      這不是一個 PHP 函式,會引致執行錯誤。
  5. mysql_fetch_row() 和 mysql_fetch_array() 有什麼分別?
    • mysql_fetch_row() 把數據庫的一列儲存在一個以零為基數的陣列中,第一欄在陣列的索引 0,第二欄在索引 1,如此類推。mysql_fetch_assoc() 把數據庫的一列儲存在一個關聯陣列中,陣列的索引就是欄位名稱,例如我的數據庫查詢送回「first_name」、「last_name」、 「email」三個欄位,陣列的索引便是「first_name」、「last_name」和「email」。
    • mysql_fetch_array() 可以同時送回 mysql_fetch_row() 和 mysql_fetch_assoc() 的值。
  6. 下面的代碼用來做什麼?請解釋。
     PHP |  copy code |? 
    1
    $date='08/26/2003';
    2
    print ereg_replace("([0-9]+)/([0-9]+)/([0-9]+)","\\2/\\1/\\3",$date);
    這是把一個日期從 MM/DD/YYYY 的格式轉為 DD/MM/YYYY 格式。我的一個好朋友告訴我可以把這個正規表達式拆解為以下的語句,對於如此簡單的表示是來說其實無須拆解,純粹為了解說的方便:

     PHP |  copy code |? 
    1
    // 對應一個或更多 0-9,後面緊隨一個斜號
    2
    $regExpression = "([0-9]+)/";
    3
    // 應一個或更多 0-9,後面緊隨另一個斜號
    4
    $regExpression .= "([0-9]+)/";
    5
    // 再次對應一個或更多 0-9
    6
    $regExpression .= "([0-9]+)";

    至於 \\2/\\1/\\3 則是用來對應括號,第一個括號對的是月份,第二個括號對應的是日期,第三個括號對應的是年份。

1 則留言給Yahoo! 的 PHP 面試題目(第三部份)

發表回覆

  

  

  

您可使用下列 these HTML標籤

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>