В 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 для поиска пользователей и определения их индексов.
Надеюсь, это поможет вам решить вашу проблему!