0

私は配列を持っています

$arrTest = array('val1','val2','val3','val4');
$arrTest['lastKey'] = 'Last Key';
foreach($arrTest as $key => $val) {
  if($key == 'lastKey') {
     echo "last found";
  }
}

上記のコードは機能しません。配列に連想要素を追加しました。それが理由でしょうか?

4

7 に答える 7

6

次のように変更=====ます。

if($key == 'lastKey')

既存のコードlast foundは、 key に対して 1 回、 key に対して 1 回、合計 2 回エコー0しますlastKey

を使用して整数0と文字列を比較すると、 true が返されます!!'lastKey'==

PHPマニュアルから

数値への文字列変換

文字列が数値コンテキストで評価されると、結果の値と型は次のように決定されます。

文字列に '.'、'e'、または 'E' のいずれかが含まれている場合、文字列は float として評価されます。それ以外の場合は、整数として評価されます。

値は文字列の最初の部分によって与えられます。文字列が有効な数値データで始まる場合、これが使用される値になります。それ以外の場合、値は 0 (ゼロ) になります。有効な数値データは、オプションの符号であり、その後に 1 つ以上の数字 (オプションで小数点を含む) が続き、その後にオプションの指数が続きます。指数は、'e' または 'E' の後に 1 つ以上の数字が続きます。

于 2011-05-23T12:13:40.967 に答える
4

===比較するために使用します。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をご覧ください。

于 2011-05-23T12:14:07.820 に答える
3

タイプも確認するには、等価条件を変更する必要があります。

if($key === 'lastKey')

これは、PHP' ' == 0が true と評価するためです。

于 2011-05-23T12:14:07.360 に答える
2

コードを実行すると、「最後に見つかった」が 2 回出力されました。'lastKey' は PHP で 0 と評価されるため、if($key == 'lastKey')実際には 2 回一致します。1 回は 0 で、もう 1 回は特別な要素です。

于 2011-05-23T12:13:54.747 に答える
0

end() 関数を使用して配列の最後のキーを取得し、if ステートメントで比較します。

$arrTest = array('val1','val2','val3','val4');
$lastKey = end($arrTest);
foreach($arrTest as $key => $val) {
  if($val == $lastKey) {
     echo "last found";
  }
}
于 2011-05-23T12:12:39.210 に答える
0

あなたのコードは正常に動作しています: ここを参照してください: 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";
  }
}
于 2011-05-23T12:14:56.680 に答える
0

配列キーが存在するかどうかをテストする場合は、次を使用しますarray_key_exists

array_key_exists('lastKey', $arrTest)

を使用することもできますが、キーに関連付けられた値が の場合はfalseissetを返すことに注意してください。null

于 2011-05-23T12:15:27.120 に答える