Поиск общего префикса массива строкPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Поиск общего префикса массива строк

Сообщение Anonymous »

У меня есть такой массив:

Код: Выделить всё

$sports = array(
'Softball - Counties',
'Softball - Eastern',
'Softball - North Harbour',
'Softball - South',
'Softball - Western'
);
Я хотел бы найти самый длинный общий префикс строки. В данном случае это будет «Софтбол -».

Я думаю, что я бы последовал этому процессу

Код: Выделить всё

$i = 1;

// loop to the length of the first string
while ($i < strlen($sports[0]) {

// grab the left most part up to i in length
$match = substr($sports[0], 0, $i);

// loop through all the values in array, and compare if they match
foreach ($sports as $sport) {

if ($match != substr($sport, 0, $i) {
// didn't match, return the part that did match
return substr($sport, 0, $i-1);
}

} // foreach

// increase string length
$i++;
} // while

// if you got to here, then all of them must be identical
Вопросы
  • Есть ли встроенная функция или гораздо проще как это сделать?
  • Для моего 5-строчного массива это, вероятно, нормально, но если бы я сделал несколько тысяч строковых массивов, было бы много накладные расходы, поэтому мне придется рассчитывать перемещение с моими начальными значениями $i, например, $i = половина строки, если это не удастся, то $i/2, пока это не сработает , затем увеличивайте $i на 1, пока не добьемся успеха. Чтобы мы делали наименьшее количество сравнений для получения результата.
Существует ли уже формула/алгоритм где-нибудь с такой проблемой?

Подробнее здесь: https://stackoverflow.com/questions/133 ... of-strings
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»