關於 isset 和邏輯運算子的使用

echo_dump發表於2020-06-14

關於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地址

相關文章