我有这个数组,是从数据库生成的:
do {
$rsvp_array[$row_rsRSVP['rsv_guest']] = array(
'id' => $row_rsRSVP['rsv_id'],
'guest' => $row_rsRSVP['rsv_guest'],
'confirmed' => $row_rsRSVP['rsv_confirmed']
);
} while ($row_rsRSVP = mysql_fetch_assoc($rsRSVP));
很好,有了print_r()我明白了:
Array
(
[1] => Array
(
[id] => 1
[guest] => 1
[confirmed] => 1
)
[15] => Array
(
[id] => 2
[guest] => 15
[confirmed] => 0
)
[5] => Array
(
[id] => 3
[guest] => 5
[confirmed] => 1
)
[10] => Array
(
[id] => 4
[guest] => 10
[confirmed] => 1
)
[6] => Array
(
[id] => 5
[guest] => 6
[confirmed] => 0
)
)
所以我知道阵列正在运行。
现在我需要查看一个数字是否在主数组中,即:
if (in_array(15, $rsvp_array)) { echo 'OK'; }
嗯,这不起作用! 15号是阵列的第二把钥匙,但没有运气! 我哪里错了? 提前感谢您的答案...
答案 0 :(得分:15)
in_array()
会搜索值 - 而不是搜索键。
你应该:
array_key_exists()
:if (array_key_exists(15, $rsvp_array)) {...}
isset()
来测试是否设置了某个密钥:if (isset($rsvp_array[15])) {...}
array_keys()
获取密钥,并在该密钥数组上使用in_array()
。答案 1 :(得分:2)
可能你正在寻找array_key_exists in_array,用于检查数组中的值是否不是密钥。
if (array_key_exists(15,$rsvp_array))
{
echo "ok";
}
或使用isset检查
isset($rsvp_array[15])
答案 2 :(得分:2)
in_array()
只查看数组的值,但您想知道,如果设置了特定的键
if (array_key_exists(15, $rsvp_array)) { echo 'OK'; }
或
if (isset($rsvp[15])) { echo 'OK'; }
在大多数情况下,第二个就足够了,但如果值为null
,它就不起作用。