В PHP, как я могу исправить недостающие ключи в массиве?

Вы можете перебирать список, отсортированный по длинам фраз в обратном порядке, и добавлять каждую возможную подфразу в набор, чтобы можно было использовать этот набор, чтобы проверить, является ли текущая фраза подфраза предыдущая, более длинная фраза:

output = []
seen = set()
for phrase in sorted(l, key=len, reverse=True):
    words = tuple(phrase.split())
    if words not in seen:
        output.append(phrase)
    seen.update({words[i: i + n + 1] for n in range(len(words)) for i in range(len(words) - n)})

так, что дано:

l = ['love', 'hair', 'light', 'hair dryer', 'bright light', 'bright hair dryer']

output становится:

['bright hair dryer', 'bright light', 'love']
16
задан Thomas Owens 21 October 2008 в 15:07
поделиться

2 ответа

$foo = array_values($foo); перенумерует массив для Вас

41
ответ дан 30 November 2019 в 16:14
поделиться

Вместо того, чтобы использовать для циклов это кажется, что необходимо использовать циклы foreach. По-видимому, Вы не заботитесь об индексах так или иначе, так как Вы перенумеровываете их.

Этот цикл:

for ($i = 0; $i < $loopSize; $i++)
{
process($myArray[$i]);
}

превращается

foreach($myArray as $key=> $value)
{
    process($value);
    /** or process($myArray[$key]); */
}

or even more simply


foreach($myArray as $value)
{
    process($value);
}
1
ответ дан 30 November 2019 в 16:14
поделиться
Другие вопросы по тегам:

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