主頁 > 後端開發 > PHP程式員必須會的 45 個PHP 面試題

PHP程式員必須會的 45 個PHP 面試題

2020-10-21 17:11:05 後端開發

Q1: == 和 === 之間有什么區別?

話題: PHP
困難: ?
  • 如果是兩個不同的型別,運算子 == 則在兩個不同的型別之間進行強制轉換
  • === 運算子執行’型別安全比較

這意味著只有當兩個運算元具有相同的型別和相同的值時,它才會回傳 TRUE,

1 === 1: true
1 == 1: true
1 === "1": false // 1 是一個整數, "1" 是一個字串
1 == "1": true // "1" 強制轉換為整數,即1
"foo" === "foo": true // 這兩個運算元都是字串,并且具有相同的值

  

為了能夠通過參考傳遞變數,我們在其前面使用&,如下所示:

$var1 = &$var2

  

Q3: $GLOBAL 是什么意思?

話題: PHP
困難: ?
$GLOBALS是關聯陣列,包含對腳本全域范圍內當前定義的所有變數的參考,

Q4: ini_set () 有什么用處?

話題: PHP
困難: ?

PHP 允許用戶使用 ini_set () 修改 php.ini 中提到的一些設定,此函式需要兩個字串引數,第一個是要修改的設定的名稱,第二個是要分配給它的新值,

給定的代碼行將啟用腳本的 display_error 設定 (如果它被禁用),

ini_set('display_errors', '1');

  

我們需要將上面的陳述句放在腳本的頂部,以便該設定一直保持啟用狀態,直到最后,此外,通過 ini_set () 設定的值僅適用于當前腳本,此后,PHP 將開始使用 php.ini 中的原始值,

Q5: 我應該在什么時候使用 require 和 include 呢?

話題: PHP
困難: ??

require() 函式與 include() 函式相同,只是它處理錯誤的方式不同,如果出現錯誤,include() 函式會生成警告,但腳本會繼續執行,require() 函式會產生致命錯誤,腳本會停止,

我的建議是 99.9% 的時間里只使用 require_once

使用 require 或 include 代替意味著您的代碼在其他地方不可重用,即您引入的腳本實際上是在執行代碼,而不是提供類或某些類功能庫,

Q6: PHP 中的 stdClass 是什么?

主題: PHP
難度: ??

stdClass 只是將其他型別強制轉換為物件時使用的通用” 空’’類,stdClass 不是 PHP 中物件的基類,這可以很容易地證明:

 class Foo{}
$foo = new Foo();
echo ($foo instanceof stdClass)?'Y':'N'; // 輸出'N'

  

對于匿名物件,動態屬性等很有用,

考慮 StdClass 的一種簡單使用場景是替代關聯陣列,請參見下面的示例,該示例顯示 json_decode() 如何允許獲取 StdClass 實體或關聯陣列,

同樣但未在本示例中顯示的SoapClient::__soapCall回傳一個StdClass實體,

//帶有StdClass的示例
$json = '{ "foo": "bar", "number": 42 }';
$stdInstance = json_decode($json);

echo $stdInstance - > foo.PHP_EOL; //"bar"
echo $stdInstance - > number.PHP_EOL; //42

//Example with associative array
$array = json_decode($json, true);

echo $array['foo'].PHP_EOL; //"bar"
echo $array['number'].PHP_EOL; //42

  

Q7: PHP 中的 die () 和 exit () 函式有什么不同?

話題: PHP
困難: ??

沒有區別,它們是一樣的, 選擇die()而不是exit()的唯一好處可能是你節省了額外鍵入一個字母的時間.

Q8: 它們之間的主要區別是什么

話題: PHP
困難: ??

const 和 define 的根本區別在于,const 在編譯時定義常量,而 define 在運行時定義常量,

 const FOO = 'BAR';
define('FOO', 'BAR');

// but
if (...) {
    const FOO = 'BAR';    // 無效
}
if (...) {
    define('FOO', 'BAR'); // 有效
}

  

同樣在 PHP 5.3 之前,const 命令不能在全域范圍內使用,你只能在類中使用它,當你想要設定與該類相關的某種常量選項或設定時,應使用此選項,或者你可能想要創建某種列舉,一個好的 const 用法的例子是擺脫了魔術數字,

Define 可以用于相同的目的,但只能在全域范圍內使用,它應該僅用于影響整個應用程式的全域設定,

除非你需要任何型別的條件或運算式定義,否則請使用 consts 而不是 define()—— 這僅僅是為了可讀性!

Q9: isset () 和 array_key_exists () 之間有什么區別?

話題: PHP
困難: ??
  • array_key_exists 它會告訴你陣列中是否存在鍵,并在 $a 不存在時報錯,
  • 如果 key 或變數存在且不是 null,isset 才會回傳 true,當 $a 不存在時,isset 不會報錯,

考慮:

$a = array('key1' => 'Foo Bar', 'key2' => null);

isset($a['key1']);             // true
array_key_exists('key1', $a);  // true

isset($a['key2']);             // false
array_key_exists('key2', $a);  // true

  

 

Q10: var_dump () 和 print_r () 有什么不同?

話題: PHP
困難: ??
  • var_dump函式用于顯示變數 / 運算式的結構化資訊,包括變數型別和變數值,陣列遞回瀏覽,縮進值以顯示結構,它還顯示哪些陣列值和物件屬性是參考,
  • print_r()函式以我們可讀的方式顯示有關變數的資訊,陣列值將以鍵和元素的格式顯示,類似的符號用于物件,

考慮:

$obj = (object) array('qualitypoint', 'technologies', 'India');

  

var_dump($obj)將在螢屏的輸出下方顯示:

object(stdClass)#1 (3) {
 [0]=> string(12) "qualitypoint"
 [1]=> string(12) "technologies"
 [2]=> string(5) "India"
}

  

print_r($obj)將在螢屏的輸出下方顯示,

stdClass Object ( 
 [0] => qualitypoint
 [1] => technologies
 [2] => India
)

  

Q11: 解釋不同的 PHP 錯誤是什么

話題: PHP
困難: ??
  • notice 不是一個嚴重的錯誤,它說明執行程序中出現了一些錯誤,一些次要的錯誤,比如一個未定義的變數,
  • 當出現更嚴重的錯誤,如 include () 命令引入不存在的檔案時,會給出警告 warning, 這個錯誤和上面的錯誤發生,腳本都將繼續,
  • fatal error 致命錯誤將終止代碼,未能滿足 require () 將生成這種型別的錯誤,

Q12: 如何在 PHP 中啟用錯誤報告?

話題: PHP
困難: ??

檢查 php.ini 中的 “display_errors” 是否等于 “on”,或者在腳本中宣告 “ini_set('display_error',1)”,

然后,在你的代碼中包含 “ERROR_REPORTING(E_ALL)”,以便在腳本執行期間顯示所有型別的錯誤訊息,

Q13: 使用默認引數宣告某些函式

話題: PHP
困難: ??
思考:
function showMessage($hello = false){
  echo ($hello) ? 'hello' : 'bye';
}

  

Q14: PHP 是否支持多重繼承?

話題: PHP
困難: ??
PHP 只支持單一繼承;這意味著使用關鍵字’extended’只能從一個類擴展一個類,

Q15: 在 PHP 中,物件是按值傳遞還是按參考傳遞?

話題: PHP
困難: ??

在 PHP 中,通過值傳遞的物件,

Q16:$a != $b 和 $a !== $b ,之間有什么區別?

話題: PHP
困難: ??
!=表示不等于(如果 $a 不等于 $b,則為 True),!==表示不全等(如果 $a 與 $b 不相同,則為 True).

Q17: 在 PHP 中,什么是 PDO?

話題: PHP
困難: ??

PDO 代表 PHP 資料物件,

它是一組 PHP 擴展,提供核心 PDO 類和資料庫、特定驅動程式,它提供了供應商中立、輕量級的資料訪問抽象層,因此,無論我們使用哪種資料庫,發出查詢和獲取資料的功能都是相同的,它側重于資料訪問抽象,而不是資料庫抽象,

Q18: 說明我們如何在 PHP 中處理例外?

Topic: PHP
Difficulty: ??
當程式執行出現例外報錯時,后面的代碼將不會再執行,這時 PHP 將會嘗試匹配第一個 catch 塊進行例外的處理,如果沒有捕捉到例外程式將會報致命錯誤并顯示”Uncaught Exception”,

可以在 PHP 中拋出和捕獲例外,

為了處理例外,代碼可以被包圍在”try” 塊中.

每個 try 必須至少有一個對應的catch塊 ,多個不同的 catch 塊可用于捕獲不同類的例外,

在 catch 塊中也可以拋出例外(或重新拋出之前的例外),

思考:

try {
    print "this is our try block n";
    throw new Exception();
} catch (Exception $e) {
    print "something went wrong, caught yah! n";
} finally {
    print "this part is always executed n";
}

  

Q19: 區分 echo 和 print ()
Topic: PHP
Difficulty: ??

echo 和 print 基本上是一樣的,他們都是用來列印輸出資料的,

區別在于:

    • echo 沒有回傳值,而 print 的回傳值為 1,因此 print 可以在運算式中使用,
    • echo 可以接受多個引數一起輸出 (但是這種多個的輸出方式很少見),而 print 一次只可以輸出一個引數,
    • echo 的輸出比 print 效率要高一些 .

Q20: require_once 和 require 在什么場景下使用?

Topic: PHP
Difficulty: ???

require_once() 作用與 require() 的作用是一樣的,都是參考或包含外部的一個 php 檔案,require_once() 引入檔案時會檢查檔案是否已包含,如果已包含,不再包含 (require) 它,

我建議在 99.9% 的時候要使用require_once

使用requireinclude意味著您的代碼不可在其他地方重用,即您要拉入的腳本實際上是在執行代碼,而不是提供類或某些函式庫,

Q21: 判斷 PHP 陣列是否是關聯陣列

Topic: PHP
Difficulty: ???

思考:
function has_string_keys(array $array) {
  return count(array_filter(array_keys($array), 'is_string')) > 0;
} 

  

如果$array至少有一個字串型別的 key ,它將被視為關聯陣列,

Q22: 如何將變數和資料從 PHP 傳至 Javascript

Topic: PHP
Difficulty: ???

這里有幾種實作方法:

  • 使用 Ajax 從服務端獲取你需要的資料,

思考get-data.php

echo json_encode(42);

  

思考index.html:

<script>
    function reqListener () {
      console.log(this.responseText);
    }

    var oReq = new XMLHttpRequest(); // new 一個請求物件
    oReq.onload = function() {
        // 在這里你可以操作回應資料
        // 真實的資料來自 this.responseText
        alert(this.responseText); // 將提示: 42
    };
    oReq.open("get", "get-data.php", true);
    //                               ^ 不要阻塞的其余部分執行,
    //                                 不要等到請求結束再繼續,
    oReq.send();
</script>

  

  • 可以在網頁任何地方輸出資料,然后使用 JavaScript 從 DOM 中獲取資訊.
<div id="dom-target" style="display: none;">
    <?php
        $output = "42"; // 此外, 做一些操作,獲得 output.
        echo htmlspecialchars($output); /* 你必須避免特殊字符,不然結果將是無效HTML, */
    ?>
</div>
<script>
    var div = document.getElementById("dom-target");
    var myData = https://www.cnblogs.com/993089249a/p/div.textContent;
</script>

  

  • 直接在 JavaScript 代碼中 echo 資料,
<script>
    var data = https://www.cnblogs.com/993089249a/p/<?php echo json_encode("42", JSON_HEX_TAG); ?>; // Don't forget the extra semicolon!
</script>

  

Q23: 有一個方法可以復制一個 PHP 陣列至另一個陣列嗎?

Topic: PHP
Difficulty: ???
PHP 陣列通過復制進行賦值,而物件通過參考進行賦值,所有默認情況下,PHP 將復制這個陣列,這里有一個 PHP 參考,一目了然:
$a = array(1,2);
$b = $a; // $b 是一個不同的陣列
$c = &$a; // $c 是 $a 的參考

  



Q25:此代碼將回傳什么?解釋結果,

主題:PHP
難度:???

考慮代碼,結果將回傳什么?

$something = 0;
echo ('password123' == $something) ? 'true' : 'false';

  

答案是true,您永遠不要將其==用于字串比較,即使將字串與字串進行比較,PHP也會將它們隱式轉換為浮點數,并且如果它們看起來是數字,則進行數字比較,===還可以

例如

'1e3' == '1000' // true

  

也回傳true,

Q26:array_map,array_walk和array_filter之間到底有什么區別?

主題:PHP
難度:???
  • array_walk 接受一個陣列和一個函式F,并通過用F(x)替換每個元素x對其進行修改,
  • array_map進行完全相同的操作,除了不代替就地修改,而是回傳帶有轉換后元素的新陣列,
  • array_filter使用函式F,而不是變換元素,將洗掉F(x)不為真的所有元素

Q27:解釋exec()與system()與passthru()之間的區別?

主題:PHP 難度:???
  • exec() 用于呼叫系統命令,也許自己處理輸出,
  • system() 用于執行系統命令并立即顯示輸出-大概是文本,
  • passthru() 用于執行您希望從中回傳原始值的系統命令-大概是二進制檔案,

Q28:您將如何使用PHP創建Singleton類?

主題:PHP
難度:???
/**
 * Singleton class
 *
 */
final class UserFactory {
    /**
     * Call this method to get singleton
     *
     * @return UserFactory
     */
    public static
    function Instance() {
        static $inst = null;
        if ($inst === null) {
            $inst = new UserFactory();
        }
        return $inst;
    }

    /**
     * Private ctor so nobody else can instantiate it
     *
     */
    private
    function __construct() {

    }
}

  

使用方法:

$fact = UserFactory::Instance();
$fact2 = UserFactory::Instance();

  

但:

$fact = new UserFactory()

  

引發錯誤,

Q29:PDO的query()與execute()有什么區別?

主題:PHP
難度:???
  • query 運行標準SQL陳述句,并要求您正確轉義所有資料,以避免SQL注入和其他問題,
  • execute運行一個準備好的陳述句,該陳述句使您可以系結引數,以避免需要轉義或參考引數,如果多次重復查詢,execute也將表現更好,

最佳實踐是堅持準備好的陳述句并執行以提高安全性,除了在客戶端提供轉義功能外,準備好的陳述句在服務器端也會編譯一次,然后可以在每次執行時傳遞不同的引數,

問題30:空合并運算子的用途是什么?

主題:PHP
難度:???

空合并運算子如果存在且不為NULL,則回傳其第一個運算元,否則,它將回傳其第二個運算元,

例:

$name = $firstName ?? $username ?? $placeholder ?? "Guest"; 

  

Q31:區分例外和錯誤

主題:PHP
難度:???
  • Error無法從中恢復,錯誤的唯一解決方案是終止執行,Exception通過使用try-catch塊或將例外拋出給呼叫者,您可以從中恢復
  • 您將無法處理Errors使用try-catch塊,即使您使用try-catch塊處理它們,如果它們發生,您的應用程式也將無法恢復,另一方面,Exceptions可以使用try-catch塊進行處理,并且可以使程式流程正常(如果發生),
  • ExceptionsErrors運行應用程式的環境有關的應用程式有關,

Q32:什么是例外類函式?

主題:PHP
難度:???

Exception類中可以使用以下功能,

  • getMessage() ?例外訊息
  • getCode() ?例外代碼
  • getFile() -源檔案名
  • getLine() ?源代碼行
  • getTrace() ? n個陣列 backtrace()
  • getTraceAsString() ?格式化的跟蹤字串
  • Exception::__toString 給出例外的字串表示形式,

Q33:區分引數化和非引數化功能

主題:PHP
難度:???
  • 未引數化的函式在呼叫時不接受任何引數,
  • 引數化函式在呼叫時采用一個或多個引數,當輸出取決于運行時給定的動態值時,可以在程式的運行時使用它們,有兩種方法可以訪問引數化函式:
  1. 按值呼叫:(這里我們直接傳遞值)
  2. 按參考呼叫:(這里我們傳遞存盤值的地址位置)

Q34:通過參考解釋函式呼叫

主題:PHP
難度:???

在通過參考呼叫的情況下,如果在函式內部修改了實際值,則將對其進行修改,在這種情況下,我們需要使用&帶形式引數的符號,在&表示可變的參考,

例:

function adder(&$str2) {  
    $str2 .= 'Call By Reference';  
}
$str = 'This is ';  
adder($str);  
echo $str;  

  

輸出:

This is Call By Reference

  

Q35:為什么我們使用extract()?

主題:PHP
難度:???

extract()函式將變數從陣列匯入區域符號表,

此函式將陣列鍵用作變數名,將值用作變數值,對于每個元素,它將在當前符號表中創建一個變數,

此函式回傳成功提取的變數數,

例:

$a = "Original";
$my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse");
extract($my_array);
echo "\$a = $a; \$b = $b; \$c = $c";

  

輸出:
$a = Cat; $b = Dog; $c = Horse

  

Q36:解釋什么是PHP閉包,為什么它使用“ use”識別符號?

主題:PHP
難度:????

考慮以下代碼:

public function getTotal($tax)
{
    $total = 0.00;

    $callback =
        function ($quantity, $product) use ($tax, &$total)
        {
            $pricePerItem = constant(__CLASS__ . "::PRICE_" .
                strtoupper($product));
            $total += ($pricePerItem * $quantity) * ($tax + 1.0);
        };

    array_walk($this->products, $callback);
    return round($total, 2);
}

  

您能解釋一下為什么使用它嗎?


這就是PHP表示閉包的方式,基本上,這意味著您允許匿名函式在其作用域之外“捕獲”區域變數(在本例中為,$tax并參考$total)并保留其值(或在$ total的情況下,對$ total本身的參考) )作為匿名函式本身內的狀態,

閉包是一個單獨的命名空間,通常,您不能訪問此命名空間之外定義的變數,

  • use 允許您訪問(使用)閉包內部的后續變數,
  • use是早期的約束力,這意味著在定義閉包時將復制變數值,因此,在閉包內部修改$ tax不會產生外部影響,除非它像物件一樣是指標,
  • 您可以像的情況一樣將變數作為指標傳遞&$total,這樣,修改$totalDOES的值會產生外部影響,原始變數的值會更改,

Q37:PHP中最新的靜態系結到底是什么?

主題:PHP
難度:????

基本上,可以歸結為以下事實:self關鍵字不遵循相同的繼承規則,self始終決議為使用它的類,這意味著,如果您在父類中創建方法并從子類中呼叫該方法,self則不會像您期望的那樣參考該子項,

后期靜態系結引入了static關鍵字的新用法,從而解決了這一特殊缺點,當您使用時static,它代表您第一次使用它的類,即,它“系結”到運行時類,

考慮:

class Car {
    public static
    function run() {
        return static::getName();
    }
    private static
    function getName() {
        return 'Car';
    }
}

class Toyota extends Car {
    public static
    function getName() {
        return 'Toyota';
    }
}

echo Car::run(); // Output: Car
echo Toyota::run(); // Output: Toyota

  

 
Q38:如何衡量PHP腳本的執行時間?
主題:PHP
難度:????

我想知道執行一次PHP while回圈需要多少毫秒,你可以幫幫我嗎?


您可以使用此microtime功能,

考慮:

$start = microtime(true);
while (...) {

}
$time_elapsed_secs = microtime(true) - $start;

  

Q39:合并兩個PHP物件的最佳方法是什么?

主題:PHP
難度:????
//We have this:
$objectA->a;
$objectA->b;
$objectB->c;
$objectB->d;

//We want the easiest way to get:
$objectC->a;
$objectC->b;
$objectC->c;
$objectC->d;

  

這有效:
$obj_merged = (object) array_merge((array) $obj1, (array) $obj2);

  

你也可以使用array_merge_recursive深層復制行為,

另一種方法是:

foreach($objectA as $k => $v) $objectB->$k = $v;

  

這比<7版本的PHP中的第一個答案要快(估計要快50%),但是在PHP> = 7中,第一個答案快了400%,

Q40:比較mysqli或PDO-優缺點是什么?

主題:PHP
難度:????

讓我們命名一些:

  • PDO是標準,這是大多數開發人員期望使用的標準,
  • 將應用程式從一個資料庫遷移到另一個資料庫并不是很常見,但是遲早您可能會發現自己正在使用不同的RDBMS處理另一個專案,如果您在家中使用PDO,那么到那時至少要少學習一件事,
  • 使用PDO的真正好處是您可以獲取資料,并將其自動注入到物件中,
  • PDO具有一些有助于SQL注入的功能
  • 從執行速度的角度來看,MySQLi會勝出,但是除非您使用MySQLi有很好的包裝器,否則它處理預準備陳述句的功能將很糟糕,插入-幾乎相等,選擇-mysqli是對于未準備好的報表,速度提高了2.5%/準備陳述句的速度提高了6.7%,

Q41:<=>運算子有什么用途?

主題:PHP
難度:????

<=>運算子將提供組合比較,因為它將:

  • 如果任一側的值相等,則回傳0
  • 如果左側的值較大,則回傳1
  • 如果右邊的值更大,則回傳-1

考慮:

 //Comparing Integers
echo 1 <= > 1; //outputs 0
echo 3 <= > 4; //outputs -1
echo 4 <= > 3; //outputs 1

//String Comparison

echo "x" <= > "x"; // 0
echo "x" <= > "y"; //-1
echo "y" <= > "x"; //1

  

Q42:PHP是否具有執行緒?
主題:PHP
難度:????

標準php不提供任何多執行緒功能,但是有一個(實驗性)擴展名實際上是- pthreads,第二個最好的辦法是讓一個腳本通過CLI執行另一個腳本,但這有點基本,根據您嘗試執行的操作以及操作的復雜程度,這可能是,也可能不是,

Q43:PHP是單執行緒還是多執行緒?

主題:PHP
難度:????
PHP本質上不是單執行緒的,但是,在這種情況下,Unix系統上最常見的PHP安裝是單執行緒安裝,最常見的Apache安裝也是如此,而nginx則沒有基于執行緒的體系結構,在最常見的Windows設定和一些更高級的Unix設定中,PHP可以并且確實在一個行程中操作多個解釋器執行緒,
自2000年以來,PHP作為解釋器就支持多執行緒,

Q44:提供一些方法來模仿PHP中的多個建構式

主題:PHP
難度:?????

眾所周知,您不能在PHP類中放置兩個具有唯一引數簽名的__construct函式,但我想這樣做:

class Student 
{
   protected $id;
   protected $name;
   // etc.

   public function __construct($id){
       $this->id = $id;
      // other members are still uninitialised
   }

   public function __construct($row_from_database){
       $this->id = $row_from_database->id;
       $this->name = $row_from_database->name;
       // etc.
   }
}

  

用PHP實作此目的的最佳方法是什么?


我可能會做這樣的事情:

 class Student
{
    public function __construct() {
        // allocate your stuff
    }

    public static function withID( $id ) {
        $instance = new self();
        $instance->loadByID( $id );
        return $instance;
    }

    public static function withRow( array $row ) {
        $instance = new self();
        $instance->fill( $row );
        return $instance;
    }

    protected function loadByID( $id ) {
        // do query
        $row = my_awesome_db_access_stuff( $id );
        $this->fill( $row );
    }

    protected function fill( array $row ) {
        // fill all properties from array
    }
}

  

然后,如果我想要一個我知道ID的學生:

$student = Student::withID( $id );

  

從技術上講,您不是在構建多個建構式,而只是在構建靜態輔助方法,而是通過這種方式避免在建構式中使用大量意大利面條式代碼,

另一種方法是結合使用工廠風格和流利風格:

class Student
{
    protected $firstName;
    protected $lastName;
    // etc.

    /**
     * Constructor
     */
    public function __construct() {
        // allocate your stuff
    }

    /**
     * Static constructor / factory
     */
    public static function create() {
        $instance = new self();
        return $instance;
    }

    /**
     * FirstName setter - fluent style
     */
    public function setFirstName( $firstName) {
        $this->firstName = $firstName;
        return $this;
    }

    /**
     * LastName setter - fluent style
     */
    public function setLastName( $lastName) {
        $this->lastName = $lastName;
        return $this;
    }
}

// create instance
$student= Student::create()->setFirstName("John")->setLastName("Doe");

  

Q45:如何在PHP中實作方法多載?

主題:PHP
難度:?????

您不能多載PHP函式,函式簽名僅基于它們的名稱,并且不包括引數串列,因此不能有兩個具有相同名稱的函式,

但是,您可以宣告一個可變參量,該可變參函式接受可變數量的引數,您將使用func_num_args()func_get_arg()獲取引數,并正常使用它們,

考慮:

function myFunc() {
    for ($i = 0; $i < func_num_args(); $i++) {
        printf("Argument %d: %s\n", $i, func_get_arg($i));
    }
}

/*
Argument 0: a
Argument 1: 2
Argument 2: 3.5
*/
myFunc('a', 2, 3.5);

  

為了處理例外,代碼可能被包圍在一個try塊中,

每個 try 必須至少有一個提示,

 

 

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/184113.html

標籤:PHP

上一篇:Laravel Maatwebsite-Excel 3.1 實作匯出匯入

下一篇:python bytes和string相互轉換(46)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more