【PHP】Null合体演算子の空文字対応

覚書です。

【PHP】Null合体演算子の空文字対応

??はnullのみを検出しますが、?:は偽値(false、0、”、null、[]など)全てを検出します。

// 三項演算子のサンプル
$age = 20;
$status = ($age >= 18) ? "成人" : "未成年";
echo $status;  // 出力: 成人

// Null合体演算子のサンプル
$name = null;
$displayName = $name ?? "ゲスト";
echo $displayName;  // 出力: ゲスト

$emptyString = "";
$result = $emptyString ?? "デフォルト値";
echo $result;  // 出力: (空文字列)

// Null合体代入演算子のサンプル
$username = "";
$displayUsername = $username ?: "匿名ユーザー";
echo $displayUsername;  // 出力: 匿名ユーザー

// 設定ページの値を使用する場合のサンプル
$options = [
    'font_color' => '',  // 未設定の場合
    'font_size' => '24',
    'font' => null
];

$text_color = $options['font_color'] ?: '#000000';
echo $text_color;  // 出力: #000000

$font_size = $options['font_size'] ?: '48';
echo $font_size;  // 出力: 24

$font_name = $options['font'] ?: 'default_font.ttf';
echo $font_name;  // 出力: default_font.ttf
スポンサーリンク

??!empty()の違い

??(Null合体演算子)と!empty()の違いに焦点を当てて、具体的な例を示します。

// テストのための様々な値を用意
$test_values = [
    'null_value' => null,
    'empty_string' => '',
    'zero_string' => '0',
    'zero_number' => 0,
    'false_value' => false,
    'valid_string' => 'center',
    'undefined_key' => $undefined  // 未定義の変数
];

// それぞれの値でテストしてみましょう
foreach ($test_values as $key => $value) {
    echo "テストケース: {$key}\n";
    echo "値: " . var_export($value, true) . "\n";
    
    // Null合体演算子(??)の場合
    $result1 = $value ?? "デフォルト値";
    
    // !empty()の場合
    $result2 = !empty($value) ? $value : "デフォルト値";
    
    echo "??の結果: " . var_export($result1, true) . "\n";
    echo "!empty()の結果: " . var_export($result2, true) . "\n";
    echo "-------------------\n";
}
テストケース: null_value
値: NULL
??の結果: "デフォルト値"
!empty()の結果: "デフォルト値"
-------------------

テストケース: empty_string
値: ""
??の結果: ""              // 空文字列をそのまま使用
!empty()の結果: "デフォルト値"  // 空と判断
-------------------

テストケース: zero_string
値: "0"
??の結果: "0"             // "0"をそのまま使用
!empty()の結果: "デフォルト値"  // 空と判断
-------------------

テストケース: zero_number
値: 0
??の結果: 0               // 0をそのまま使用
!empty()の結果: "デフォルト値"  // 空と判断
-------------------

テストケース: false_value
値: false
??の結果: false           // falseをそのまま使用
!empty()の結果: "デフォルト値"  // 空と判断
-------------------

テストケース: valid_string
値: "center"
??の結果: "center"        // 有効な値
!empty()の結果: "center"    // 有効な値
-------------------

テストケース: undefined_key
値: NULL
??の結果: "デフォルト値"
!empty()の結果: "デフォルト値"
-------------------

ご参考になれば幸いです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする