PHP关联数组

| 我有一个数组
$arrTest = array(\'val1\',\'val2\',\'val3\',\'val4\');
$arrTest[\'lastKey\'] = \'Last Key\';
foreach($arrTest as $key => $val) {
  if($key == \'lastKey\') {
     echo \"last found\";
  }
}
上面的代码不起作用。我在数组中添加了关联元素。可能是原因吗?     
已邀请:
您还需要更改相等条件以检查类型。
if($key === \'lastKey\')
这是因为PHP将
\' \' == 0
评估为true。     
==
更改为
===
if($key == \'lastKey\')
您现有的代码回显
last found
两次,一次对键
0
,一次对键
lastKey
。 使用
==
比较整数
0
和字符串
\'lastKey\'
返回true! 从PHP手册中:   字符串转换为数字      在字符串中对字符串求值时   数字上下文,结果值   和类型确定如下。      该字符串将被评估为   如果包含任何   字符\'。\',\'e \'或\'E \'。   否则,它将被评估为   整数。      该值由初始   字符串的一部分。如果字符串   以有效的数字数据开头,这   将是使用的值。否则,   值将为0(零)。有效数字   数据是可选符号,其后是   一个或多个数字(可选   包含小数点),然后是   通过可选的指数。指数   是\'e \'或\'E \',后跟一个或   更多数字。     
===
进行比较。因为将键“ 7”与字符串“ 8”进行比较时,字符串将转换为整数,并返回错误的结果。 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/zh/language.operators.comparison.php     
当我运行您的代码时,\'last found \\'被输出两次。 \'lastKey \'在PHP中的值为0,因此
if($key == \'lastKey\')
实际上匹配两次:一次为0,一次为您的特殊元素。     
使用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,它将回显两次。
<?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)
您也可以使用
isset
,但请注意,如果与键关联的值为
null
,则它将返回false。     

要回复问题请先登录注册