Назад в школе, на моих преподавателей сказал для бизнес-приложений, все, что необходимо знать, знают, добавляют, вычитают, умножаются и делятся. Все другие формулы запрашивающая сторона будет знать и сообщать Вам, что необходимо. Теперь поймите, что это для финансирования создания отчетов, и приложение сфокусировало школу. По сей день это сохранялось для меня. Я никогда не должен был знать больше, чем это.
попробуйте
$maxlen = max(array_map('strlen', $ary));
Конечно:
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);
Нет цикла. ; -)
Атомарность - ключевая концепция, когда у вас есть любая форма параллельной обработки (включая различные приложения, взаимодействующие или совместно использующие данные), которая включает совместно используемые ресурсы.
Проблема хорошо проиллюстрирована на примере. Допустим, у вас есть две программы, которые хотят создать файл, но только если файл еще не существует. Любая из двух программ может создать файл в любой момент времени.
Если вы это сделаете (я буду использовать 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;
}
}
}