这很奇怪。我刚升级到 WordPress 3.7.1,突然开始报错
PHP Warning: array_pop() expects parameter 1 to be array, null given in (...)
这是相关的代码:
$User = array_pop($RM->DB->get_results($RM->DB->prepare(
'SELECT
`user_id` AS `ID`,
`api_key` AS `key`
FROM
`rm_users`
WHERE
user_id = %d'
, $user_value)));
这里我使用 WordPress 的 $wpdb 对象来查询自定义表。奇怪的是,如果我将其更改为:
$Users = $RM->DB->get_results($RM->DB->prepare(
'SELECT
`user_id` AS `ID`,
`api_key` AS `key`
FROM
`rm_users`
WHERE
user_id = %d'
, $user_value));
$User = array_pop($Users);
它工作得很好。如果 array_pop 接收到一个 null 参数,那么它代表 $Users 将为 null 并且会导致相同的错误,但它不是 null 并且不会导致错误。在我使用 WordPress 的“get_results”方法和“array_pop”的任何地方都是一样的。
这是一个合法的 php 错误,还是有一些我不知道的深层机制会阻止 array_pop 直接获取方法的输出?