作成日: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);