这就是问题所在:
$user = reset(
get_users(
reset
需要对数组的引用,并且没有用于错误检查的机制。因此,即使它找到了用户,您也在误用返回值。
可能可以调整它以正确使用引用,但PHP中的引用是最好避免的,并且有更好的选项可以在PHP中获取数组中的第一项。
这将更好地工作,并提供检查错误值或空数组的机会:
$users = get_users(... );
$user = reset( $users );
这会更好,因为它不会修改阵列,而且运行时间为O(1)次,因此无论阵列有多大,成本都是相同的:
$users = get_users(...);
$user = array_pop(array_reverse($users));
这个也适用于PHP 5.4+:
$users = get_users(...);
$user = array_values($users)[0];
所有这些,包括您现在拥有的,都需要您这样做:
if ( empty( $users ) ) {
// nothing was found, print an error message and abort
}