Ninazu
@Ninazu

Как найти следующий ключ в массиве?

С поиском значения все просто. array_search.
А вот с поиском ключа сложнее. Есть ли встроенная функция или только самому функционал писать?

Пока что так. Но мне не очень нравится подобное решение
function searchNextKey($keyName, $sourceArray) {
	if (array_key_exists($keyName, $sourceArray)) {
		while (key($sourceArray) !== $keyName) {
			next($sourceArray);
		}

		next($sourceArray);
		$nextScenario = key($sourceArray);

		return $nextScenario;
	}

	return null;
}
  • Вопрос задан
  • 116 просмотров
Решения вопроса 1
alsopub
@alsopub
Как вариант - array_keys, в них array_search, +1 к результату = следующий ключ.
Не уверен на счет сохранения последовательности при взятии array_keys.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ninazu
@Ninazu Автор вопроса
Алексей: Спасибо. Последовательность не слетает.

function searchKey($keyName, $sourceArray) {
	if (!(is_string($keyName) || is_numeric($keyName)) || !isset($sourceArray[$keyName])) {
		return null;
	}

	$keys = array_keys($sourceArray);
	$nextScenario = @$keys[array_search($keyName, $keys) + 1];

	return $nextScenario;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы