PHP 短路评估

PHP short-circuit evaluation

我有这个代码:

if (!in_array('array_item', $body) || !is_int($body['array_item']))
    throw new Exception();

现在由于短路,如果 $body 中不存在 array_item,我希望 is_int 不会执行。但是我仍然收到 PHP 关于 "undefined index array_item" 的投诉,我认为这是来自 $body['array_item'].

有人可以向我解释为什么 $body['array_item'] 被执行而 is_int 没有被执行吗?

in_array looks for a value in an array. If you want to see, if a key exists, use array_key_exists 改为

if (!array_key_exists('array_item', $body) || !is_int($body['array_item']))
    throw new Exception();