Как получить длину самой длинной строки в массиве

Назад в школе, на моих преподавателей сказал для бизнес-приложений, все, что необходимо знать, знают, добавляют, вычитают, умножаются и делятся. Все другие формулы запрашивающая сторона будет знать и сообщать Вам, что необходимо. Теперь поймите, что это для финансирования создания отчетов, и приложение сфокусировало школу. По сей день это сохранялось для меня. Я никогда не должен был знать больше, чем это.

33
задан Click Upvote 19 November 2009 в 10:03
поделиться

3 ответа

попробуйте

$maxlen = max(array_map('strlen', $ary));
107
ответ дан 27 November 2019 в 17:31
поделиться

Конечно:

function getmax($array, $cur, $curmax) {
  return $cur >= count($array) ? $curmax :
    getmax($array, $cur + 1, strlen($array[$cur]) > strlen($array[$curmax])
           ? $cur : $curmax);
}

$index_of_longest = getmax($my_array, 0, 0);

Нет цикла. ; -)

4
ответ дан 27 November 2019 в 17:31
поделиться

Атомарность - ключевая концепция, когда у вас есть любая форма параллельной обработки (включая различные приложения, взаимодействующие или совместно использующие данные), которая включает совместно используемые ресурсы.

Проблема хорошо проиллюстрирована на примере. Допустим, у вас есть две программы, которые хотят создать файл, но только если файл еще не существует. Любая из двух программ может создать файл в любой момент времени.

Если вы это сделаете (я буду использовать C, так как это то, что в вашем примере):

 ...
 f = fopen ("SYNCFILE","r");
 if (f == NULL) {
   f = fopen ("SYNCFILE","w");
 }
 ...

вы не можете быть уверены, что другая программа не " t создал файл между вашим открытым для чтения и вашим открытым для записи.

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

Примерно так ..

$longest = 0;
for($i = 0; $i < count($array); $i++)
{
  if($i > 0)
  {
    if(strlen($array[$i]) > strlen($array[$longest]))
    {
      $longest = $i;
    }
  }
}
1
ответ дан 27 November 2019 в 17:31
поделиться
Другие вопросы по тегам:

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