私は配列を持っています
$arrTest = array('val1','val2','val3','val4');
$arrTest['lastKey'] = 'Last Key';
foreach($arrTest as $key => $val) {
if($key == 'lastKey') {
echo "last found";
}
}
上記のコードは機能しません。配列に連想要素を追加しました。それが理由でしょうか?
私は配列を持っています
$arrTest = array('val1','val2','val3','val4');
$arrTest['lastKey'] = 'Last Key';
foreach($arrTest as $key => $val) {
if($key == 'lastKey') {
echo "last found";
}
}
上記のコードは機能しません。配列に連想要素を追加しました。それが理由でしょうか?
次のように変更==
し===
ます。
if($key == 'lastKey')
既存のコードlast found
は、 key に対して 1 回、 key に対して 1 回、合計 2 回エコー0
しますlastKey
。
を使用して整数0
と文字列を比較すると、 true が返されます!!'lastKey'
==
数値への文字列変換
文字列が数値コンテキストで評価されると、結果の値と型は次のように決定されます。
文字列に '.'、'e'、または 'E' のいずれかが含まれている場合、文字列は float として評価されます。それ以外の場合は、整数として評価されます。
値は文字列の最初の部分によって与えられます。文字列が有効な数値データで始まる場合、これが使用される値になります。それ以外の場合、値は 0 (ゼロ) になります。有効な数値データは、オプションの符号であり、その後に 1 つ以上の数字 (オプションで小数点を含む) が続き、その後にオプションの指数が続きます。指数は、'e' または 'E' の後に 1 つ以上の数字が続きます。
===
比較するために使用します。key0
が string と比較される場合lastKey
、string は整数に変換され、false の結果が返されるためです。
http://codepad.org/5QYIeL4f
$arrTest = array('val1','val2','val3','val4');
$arrTest['lastKey'] = 'Last Key';
foreach($arrTest as $key => $val) {
if($key === 'lastKey') {
echo "last found";
}
}
相違点について詳しくは、http: //php.net/manual/en/language.operators.comparison.phpをご覧ください。
タイプも確認するには、等価条件を変更する必要があります。
if($key === 'lastKey')
これは、PHP' ' == 0
が true と評価するためです。
コードを実行すると、「最後に見つかった」が 2 回出力されました。'lastKey' は PHP で 0 と評価されるため、if($key == 'lastKey')
実際には 2 回一致します。1 回は 0 で、もう 1 回は特別な要素です。
end() 関数を使用して配列の最後のキーを取得し、if ステートメントで比較します。
$arrTest = array('val1','val2','val3','val4');
$lastKey = end($arrTest);
foreach($arrTest as $key => $val) {
if($val == $lastKey) {
echo "last found";
}
}
あなたのコードは正常に動作しています: ここを参照してください: http://codepad.org/hfOFHMnc
ただし、文字列を 0 と比較するとバグが発生する可能性があり、2 回エコーされるため、「==」の代わりに「===」を使用してください。
<?php
$arrTest = array('val1','val2','val3','val4');
$arrTest['lastKey'] = 'Last Key';
print_r($arrTest);
foreach($arrTest as $key => $val) {
if($key == 'lastKey') { // use === here
echo "key = $key :: last found \n";
}
}
配列キーが存在するかどうかをテストする場合は、次を使用しますarray_key_exists
。
array_key_exists('lastKey', $arrTest)
を使用することもできますが、キーに関連付けられた値が の場合はfalseisset
を返すことに注意してください。null