Задать вопрос
@Aqulus

Как начинать массив с 1, а не с 0 в php?

Здравствуйте. Требуется начинать массив PHP с нуля, так как ключ используется в юзернеймах.

Использую код для подсчета юзеров и вставляю ключи по порядку в их юзернеймы. Возникла проблема, что один юзер с ником "Администратор #0", а мне нужно, чтобы массив начинался с единички и продолжал (1,2,3,4,5,6,7.........15)

Код:
protected function getServiceAccountId()
	{
		$serviceAccounts = $this->finder('XF:User')
			->where('is_service_account', true)
			->order('user_id')
			->fetch()->toArray();

		foreach (array_values($serviceAccounts) as $key => $serviceAccount)
		{
			if ($serviceAccount->user_id == $this->user_id)
			{
				return $key;
			}
		}

		return $serviceAccounts;
	}


Искал в гугле, но ничего не нашёл, помогите, пожалуйста.
  • Вопрос задан
  • 618 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 2
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
А такой элементарнейший код нужно искать в Google?

$tmp = array();foreach($serviceAccounts as $k => $v){$tmp[$k + 1] = $v;}
return $tmp;
Ответ написан
Комментировать
HardBot
@HardBot
back-end, front-end developer
Пригласить эксперта
Ответы на вопрос 1
ValeriuCutebov
@ValeriuCutebov
В PHP массивы всегда начинаются с нуля, но вы можете создать массив, который начинается с 1, путем использования функции array_combine(), которая создает новый массив, используя один массив в качестве ключей, а другой - в качестве значений.

В вашем случае, вы можете создать массив со значениями ключей, начиная с 1, используя цикл foreach для перебора пользователей и добавления их в новый массив с помощью функции array_combine(). Затем вы можете использовать новый массив вместо исходного для поиска пользователей и определения их индексов.

protected function getServiceAccountId()
{
  $serviceAccounts = $this->finder('XF:User')
    ->where('is_service_account', true)
    ->order('user_id')
    ->fetch()->toArray();

  $keyValues = range(1, count($serviceAccounts));
  $keyedAccounts = array_combine($keyValues, $serviceAccounts);

  foreach ($keyedAccounts as $key => $serviceAccount)
  {
    if ($serviceAccount->user_id == $this->user_id)
    {
      return $key;
    }
  }

  return $keyedAccounts;
}

В этом примере мы используем функцию range() для создания массива с числами от 1 до количества пользователей в $serviceAccounts. Затем мы используем array_combine(), чтобы создать новый массив $keyedAccounts, используя этот массив чисел в качестве ключей и $serviceAccounts в качестве значений.

Далее мы используем новый массив $keyedAccounts вместо $serviceAccounts в цикле foreach для поиска пользователей и определения их индексов.

Надеюсь, это поможет вам решить вашу проблему!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽