
PHP
Помогите с кодом PHP
Интересует как работает вложенный if в for,почему высвечивает именно NAV, а не Boss? пожалуйста объясните построчно код, сижу над ним со вчерашнего дня!!!


В начале задается массив строк — $name.
Похоже, что задача — найти в массиве самую короткую строку: алгоритм решения очень похож.
1. В начале принимаем нулевую строку ($name[0] == "Boss") в качестве самой короткой (сохраняем ее в $nam), а ее длину запоминаем в $min.
2. Затем циклом проходимся по всем строкам в нашем массиве. В цикле переменная $i меняет значение от 0 до количества элементов массива $name (не включая это количество).
У нас 8 элементов с индексами 0, 1, 2, 3, 4, 5, 6, 7, но не 8.
Поэтому переменная $i получает значение 0, а с каждым повтором цикла растет ($i++), пока не станет равна длине массива $name (то есть 8).
Тело цикла выполнится для $i = 0, $i = 1, $i = 2 и так далее.
Для $i = 8 тело цикла уже не выполнится.
3. В теле цикла мы берем из массива строку с индексом $i — $name[$i] и определяем ее длину при помощи функции strlen. Длина i-той строки помещается в переменную $len.
4. Затем мы сравниваем эту длину с нашей «минимальной» длиной — $min. Вдруг i-тая строка еще короче, чем та, которую мы считали самой короткой?
5. Если так, то i-тую строку мы запоминаем как самую короткую: пишем эту строку в $nam, а в $min помещает ее длину.
6. Цикл повторяется для нового значения $i (идем к пункту 3) или завершается, если значение $i достигло размера массива (идем к пункту 7).
7. Цикл закончился, и теперь мы выводим строку $nam — ту самую, у которой длина наименьшая.
Похоже, что задача — найти в массиве самую короткую строку: алгоритм решения очень похож.
1. В начале принимаем нулевую строку ($name[0] == "Boss") в качестве самой короткой (сохраняем ее в $nam), а ее длину запоминаем в $min.
2. Затем циклом проходимся по всем строкам в нашем массиве. В цикле переменная $i меняет значение от 0 до количества элементов массива $name (не включая это количество).
У нас 8 элементов с индексами 0, 1, 2, 3, 4, 5, 6, 7, но не 8.
Поэтому переменная $i получает значение 0, а с каждым повтором цикла растет ($i++), пока не станет равна длине массива $name (то есть 8).
Тело цикла выполнится для $i = 0, $i = 1, $i = 2 и так далее.
Для $i = 8 тело цикла уже не выполнится.
3. В теле цикла мы берем из массива строку с индексом $i — $name[$i] и определяем ее длину при помощи функции strlen. Длина i-той строки помещается в переменную $len.
4. Затем мы сравниваем эту длину с нашей «минимальной» длиной — $min. Вдруг i-тая строка еще короче, чем та, которую мы считали самой короткой?
5. Если так, то i-тую строку мы запоминаем как самую короткую: пишем эту строку в $nam, а в $min помещает ее длину.
6. Цикл повторяется для нового значения $i (идем к пункту 3) или завершается, если значение $i достигло размера массива (идем к пункту 7).
7. Цикл закончился, и теперь мы выводим строку $nam — ту самую, у которой длина наименьшая.
Вася
спасибо за развернутый ответ, но не понятно вот что: $min = strlen($name[0]); - считывает строку и помещает в переменную кол-во букв, т. е в нашем случае в переменной $min=4 символа! далее for ($i=0; $i < count($name); $i++) - переменная "i" увеличивается до тех пор, пока не упрется в 7 т. к кол-во элементов массива 7! Далее- $len = strlen($name[$i]); - в переменную $len записывается $name[$i], который равен $name[0] - за первый проход цикла!, далее проверяется условие if ($len < $min) -------------------------т. е if (0 < 0), так что ли? вот здесь мне не ясно никак! или тут так : if (0 < 4) то ...условие.... поясните пожалуйста этот момент!!!!
на скрине мелко не читается,
сюда копи-пасте сделайте
сюда копи-пасте сделайте
Вася
<?php
$name = array('Boss', 'Lentin', 'NAV', 'Endless', 'Dragons', 'SiLeNT', 'Doctor', 'Lynx');
$min = strlen($name[0]);
$nam = $name[0];
echo "$min ";
echo "$nam ";
for ($i=0; $i < count($name); $i++)
{
$len = strlen($name[$i]);
echo "$len ";
if ($len < $min)
{
$nam = $name[$i];
$min = strlen($nam);
}
}
echo 'Наименьшая длина - '.$nam;
?>
$name = array('Boss', 'Lentin', 'NAV', 'Endless', 'Dragons', 'SiLeNT', 'Doctor', 'Lynx');
$min = strlen($name[0]);
$nam = $name[0];
echo "$min ";
echo "$nam ";
for ($i=0; $i < count($name); $i++)
{
$len = strlen($name[$i]);
echo "$len ";
if ($len < $min)
{
$nam = $name[$i];
$min = strlen($nam);
}
}
echo 'Наименьшая длина - '.$nam;
?>
Похожие вопросы
- Что означает "%0A" в коде php?
- Почему браузер отображает сам код php а не готовый ответ "5"?
- ошибка в коде php
- Необходимо оптимизировать и ускорить код PHP
- Помогите с PHP кодом! Где косяк?
- Как заменить html код с помощью php файла.
- Помогите с php кодом, плиз) хотел функцию транслитерации написать, только ошибка выходит и все :(
- Структура PHP кода
- При написании php кода для отправки записи в базу данных выходит ошибка
- PHP MYSQL после ввода запроса , отображается пустая строка перед 1 кой, немогу понять Помогите пожалуйста