Функция parse_users
возвращает массив.
Я делаю следующее в другой функции:
return reset($this->parse_users($records));
Но я получаю Strict Standards: Only variables should be passed by reference in...
Это потому, что я выполняю функцию reset()
для функции?
Должен ли я сделать это так:
$users = $this->parse_users($records); return reset($users);
Или что-то еще?
Это точно. reset
принимает ссылку на массив как параметр, поэтому в основном требуется реальная переменная для ссылки – даже если это значение перекрестной ссылки.
почему ты не попробовал
$users = $this->parse_users($records); return reset($users);
?
Это верно
Однострочное решение использует дополнительную пару скобок; это превратит ссылку в переменную и опустит ошибку:
return reset( ( $this->parse_users($records) ) );
Из документации PHP для сброса :
смешанный сброс (массив и $ массив)
reset () перематывает внутренний указатель массива на первый элемент и возвращает значение первого элемента массива.
Функция PHP reset () принимает ссылку на массив. Строгое предупреждение возникает потому, что вы напрямую передаете результат parse_users для сброса, без возможности доступа к этому массиву в другой функции.
Если вы пытаетесь вернуть полный массив (а не только первое значение) после его сброса, вы должны использовать:
$users = $this->parse_users($records); reset($users); return $users;
Кроме того, если вы просто хотите получить первое значение от parse_users, вы можете просто использовать:
$users = $this->parse_users($records); return $users[0];
Функция сброса нужна только тогда, когда вы выполняете итерацию по массиву и хотите убедиться, что вы начинаете с самого начала.