關於isset和邏輯運算子的使用
之前看到Hyperf的框架中,關於服務端的程式碼,有一個設定配置的檔案的程式碼,如下:
$config = ['host' => ''];
isset($config['host']) && $config['host'] = '127.0.0.1';
這個程式碼裡是把isset()
和邏輯運算子放在一起的,當這個isset()
存在的時候,就會給它重新賦值,比起寫if
來說,程式碼看起來清爽了很多。比如if
的實現:
$config = [];
if (isset($config['host'])) $config['host'] = '127.0.0.1';
if (isset($config['host'])) {
$config['host'] = '127.0.0.1';
}
上下一比較,感覺有點意思,至於效能什麼的,這個我就不知道了,這樣的其實一個邏輯判斷,不僅可以是isset()
,很多函式都可以這樣寫,比如empty()
$config = [];
isset($config['host']) && $config['host'] = '127.0.0.1';
var_dump($config);
empty($config['host']) && $config['host'] = 'localhost';
var_dump($config);
效能的話,不知道怎麼測試。如果單純的是我這樣測試的話:很明顯是if()
語句比邏輯運算子要快一些,歡迎大家來指正
$config = ['host'];
$start = microtime(true);
echo $start . PHP_EOL;
for ($i = 0; $i <= 10000; $i++) {
isset($config['host']) && $config['host'] = '127.0.0.1' . $i;
}
$end = microtime(true);
echo $end . PHP_EOL;
echo $end - $start . PHP_EOL;
$start1 = microtime(true);
echo $start1 . PHP_EOL;
for ($i = 0; $i <= 10000; $i++) {
if (isset($config['host'])) {
$config['host'] = '127.0.0.1' . $i;
}
}
$end1 = microtime(true);
echo $end1 . PHP_EOL;
echo $end1 - $start1;
本作品採用《CC 協議》,轉載必須註明作者和本文連結
LIYi ---- github地址