幾道php基礎面試題

來源:互聯網
上載者:User
前言昨晚實驗室一師弟在微薄上@我,給我發了幾道php的基礎面試題,這裡把我寫的答案貼出來題目(1)寫一個函數擷取URL的檔案尾碼,例如“http://www.feiyan.info/test.php?c=class&m=method”(獲得php或者.php)
<?php/** * 給定url,擷取檔案尾碼 * @param string $url * @return string */function getUrlPostfix ($url){    $url_arr = explode('.', $url);    $postfix = $url_arr[count($url_arr) - 1];        $substr = substr($postfix, 0, 3);    return $substr;}$url = "http://www.feiyan.info/test.php?c=class&m=method";$str = getUrlPostfix($url);echo $str . "\n";
(2)寫一個函數,將一個字串每隔三個字元添加一個逗號,例如把字串1234567890轉換為1,234,567,890(金融中用到的記賬方法)
<?php/** * 每隔3個字元,用逗號進行分隔 * @param string $str * @return string */function splitStrWithComma ($str){    $arr = array();    $len = strlen($str);        for ($i = $len - 1; $i >= 0;) {        $new_str = "";        for ($j = $i; $j > $i - 3 && $j >= 0; $j --) {            $new_str .= $str[$j];        }        $arr[] = $new_str;        $i = $j;    }        $string = implode(',', $arr);        // 翻轉字串自己實現    // $string = strrev($string);    for ($i = 0, $j = strlen($string) - 1; $i <= $j; $i ++, $j --) {        $tmp = $string[$i];        $string[$i] = $string[$j];        $string[$j] = $tmp;    }        return $string;}$str = "1234567890";$new_str = splitStrWithComma($str);echo $new_str . "\n";

(3)寫一個php函數算出兩個檔案的相對路徑。例如$a="/a/b/c/d/e.php"; $b="/a/b/12/34/c.php",B相對於A的相對路徑是什嗎?這道題目可以看成是求第一個公用節點的題目,網上流傳的代碼大部分是錯的,考慮不周全,當然我這個也只是用“../”去表示,沒用"./"

<?php/** * 求$b相對於$a的相對路徑 * @param string $a * @param string $b * @return string */function getRelativePath ($a, $b){    $patha = explode('/', $a);    $pathb = explode('/', $b);        $counta = count($patha) - 1;    $countb = count($pathb) - 1;        $path = "../";    if ($countb > $counta) {        while ($countb > $counta) {            $path .= "../";            $countb --;        }    }        // 尋找第一個公用結點    for ($i = $countb - 1; $i >= 0;) {        if ($patha[$i] != $pathb[$i]) {            $path .= "../";            $i --;        } else { // 判斷是否為真正的第一個公用結點,防止出現子目錄重名情況            for ($j = $i - 1, $flag = 1; $j >= 0; $j --) {                if ($patha[$j] == $pathb[$j]) {                    continue;                } else {                    $flag = 0;                    break;                }            }                        if ($flag)                break;            else                $i ++;        }    }        for ($i += 1; $i <= $counta; $i ++) {        $path .= $patha[$i] . "/";    }        return $path;}$a = "/a/c/d/e.php";$b = "/a/c.php";$path = getRelativePath($a, $b);echo $path;

(4)計算兩個日期之間的天數

<?php/** * 求兩個日期之間相差的天數(針對1970年1月1日之後,求之前可以採用泰勒公式) * @param string $day1 * @param string $day2 * @return number */function diffBetweenTwoDays ($day1, $day2){    $second1 = strtotime($day1);    $second2 = strtotime($day2);        if ($second1 < $second2) {        $tmp = $second2;        $second2 = $second1;        $second1 = $tmp;    }        return ($second1 - $second2) / 86400;}$day1 = "2013-07-27";$day2 = "2013-08-04";$diff = diffBetweenTwoDays($day1, $day2);echo $diff."\n";

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.