作成日:2024-02-29, 更新日:2024-02-29
?? 演算子(Null合体演算子)
$ary = arrary( 'xxy' => 1, 'xyy' => null, ); $init_val = '空'; echo $ary['xxx'] ?? $init_val; // 「空」が出力 echo $ary['xxy'] ?? $init_val; // 「1」が出力 echo $ary['xyy'] ?? $init_val; // 「空」が出力
「$a = $entry_data['cbe_id'] ?? ''」みたいな感じでPHPとjavascriptの違い
▼PHP
echo $entry_data['cbe_id'] ?? '';
▼javascript
console.log(entry_data['cbe_id'] ?? '');
javascriptも似たような感じだけど微妙に異なる
PHP | Javascript | |
---|---|---|
$entry_data自体が存在しない | 右辺の値 | エラー |
$entry_data = null | 通常はエラー。PHP 7.0以降では、右辺の値 | エラー |
$entry_dataが配列ではなく、文字列の場合 | エラー | 右辺の値 |
$entry_data['cbe_id'] = null | 右辺の値 | 右辺の値 |
問題点
- PHP7.0以降で使える
- $aryが文字列など型が違うならエラー
PHP: 独自関数
返したい値は下記のような感じ
- 対象が配列じゃない → $init_val
- キーが存在しない → $init_val
- 値がnull → 条件次第で → $init_val
function getAry( $ary, $key, $init_val='', $prms=array() ) { if ( !is_array($ary) ) { return $init_val; } if ( !array_key_exists($key, $ary) ) { return $init_val; } $val = $ary[$key]; if ( $val == null ) { if ( array_key_exists('change_null', $prms) && $prms['change_null'] ) { $val = $init_val; } } return $val; } $ary = arrary( 'xxy' => 1, 'xyy' => 2, ); $init_val = '空'; echo getAry( $ary, 'xxx', $init_val);