PHPの雑学はこちら。
このような配列を宣言する場合:
<?php $arr = [ 'foo' => 'bar', NULL => 'hello' ]; ?>
このようにアクセスできます
print $arr[NULL];
これはhello
を出力します。なぜこれが役立つ、関連する、または必要なのですか? PHPバグまたは機能ですか?
私の唯一のアイデアは、NULLキーを使用するすべての人にキーがNULLであることを説明するために、エラーキーと等しいNULLキーを持つ配列を宣言できるということです。
$arr[NULL] = 'Warning you have used a null key, did you mean to?';
誰もがこれを便利だと感じましたか?善よりも害をもたらすもののようです。
マニュアル からの引用:
Nullは空の文字列にキャストされます。つまり、キーnullは実際には ""の下に格納されます。
キーのキャスト方法に関する追加の詳細は次のとおりです。
キーは整数または文字列のいずれかです。値は任意のタイプにすることができます。
さらに、次のキーキャストが発生します。
- 有効な10進整数を含む文字列は、数値の前に+記号が付いていない限り、整数型にキャストされます。例えば。キー「8」は実際には8の下に格納されます。一方、「08」は有効な10進整数ではないため、キャストされません。
- 浮動小数点数も整数にキャストされます。つまり、小数部は切り捨てられます。例えば。キー8.7は実際には8の下に保存されます。
- ブールも整数にキャストされます。つまり、キーtrueは実際には1の下に格納され、キーfalseは0の下に格納されます。
- Nullは空の文字列にキャストされます。つまり、キーnullは実際には ""の下に格納されます。
- 配列とオブジェクトはキーとして使用できません。これを行うと、「オフセットタイプが無効です」という警告が表示されます。
これが有用または必要であることに関しては、議論の余地があります。整数または文字列キーを使用するように求められ、暗黙的なキーのキャストについて警告されました。
返された配列のキーとして列値の1つを使用できるクラスを使用してdbにアクセスするときに、Nullキーを使用できる可能性があることがわかりました。一部の列の値はヌルになる可能性があります。
連想php配列によって設定されたフォームAPIを考えると、データベース内のNULL値を示すためにnullキー付きの値を使用すると便利であることがわかりました。例えば。:
$this->addElement('select', 'foreignkey_id', array(
'label'=>'Add a Poll',
'multiOptions' => array(
null => 'No value selected',
'0' => 'Element with ID0 selected'
)
));
この場合、nullはデータベース列foreignkey_idのNULL(デフォルト)値にマップされ、0はキー0の行にマップされます。
ただし、この特定のユースケース以外では、DCoderのコメントはここで信頼できると思う傾向があります...