Не пойму как отрабатывает скрипт

206
09 мая 2018, 02:40

Вот скрипт, выводит на странице три отзыва посетителей случайным образом(и рисует оценку звездочками). Файлик текстовый, формата: х|х|х|х|

$DB = file('/home/l//test/public_html/book.dat'); 
    $s=1;
    $result = array();
    foreach($DB as $line) {
        $start = $DB[count($DB)-$s];    
        $pieces = explode("|", $start);
        $strlen = mb_strlen($pieces[5],'UTF-8');
        if($strlen <= 550 and $pieces[11]!= "" and $pieces[10]!= "") { 
            $city = "";
            if($pieces[3]!= "" and $pieces[3]!= "--") { $city = "($pieces[3])"; }
            $html_stars = "";
            for ($x=0; $x<$pieces[10]; $x++) {
                $html_stars .= "<img src=\"images/guest_stars/star_on.png\" width=\"14\" height=\"14\">";
            }
            for ($x=0; $x<5-$pieces[10]; $x++) {
                $html_stars .= "<img src=\"images/guest_stars/star_off.png\" width=\"14\" height=\"14\">";
            }
            $result[] = <<<HERE
             <div class="item tg-populartour">
                <div class="tg-populartourcontent">
                    <div class="tg-description">
                        <p>$pieces[1]<br>$pieces[2] $city</p>
                    </div>
                    <div class="tg-populartourfoot">
                        <p>$pieces[5]</p>
                        $html_stars
                        <em>(общая оценка: $pieces[10])</em>
                    </div>
                </div>
            </div> 
HERE;
            #if($c > 4) { break; }
        }
        $s++;
    }   

    shuffle($result);
    $rand_keys = array_rand($result, 3);
    echo $result[$rand_keys[0]];
    echo $result[$rand_keys[1]];
    echo $result[$rand_keys[2]];

Условие $strlen <= 550 если уменьшить - результат пустой. Отзывы с длиной меньше этого числа есть 100%! В чем вопрос. Если хоть один $result[$rand_keys[х]] пустой, пустые все. Почему так? Это особенности работы shuffle? Или я чего то не понимаю? Ну пускай два отзыва выведет, один. Если остальные не прошли по условию. Т.е. если поставить, скажем, $strlen <= 400 - всё пусто. А отзывы есть и по 100 символов. Спасибо!

READ ALSO
localStorage.setitem и метод filter()

localStorage.setitem и метод filter()

У меня есть 2 ссылки и 2 блока

182
ASP.NET MVC Ошибка 0x800a1391 - Ошибка выполнения JavaScript: &ldquo;$&rdquo;

ASP.NET MVC Ошибка 0x800a1391 - Ошибка выполнения JavaScript: “$”

УчусьРазбираю лекцию ITVDN MVC4 WebApi, вторая лекция

188
распарсить массив в скрипте

распарсить массив в скрипте

как вывести значение success в скрипте

216
Маска для input на js

Маска для input на js

Необходимо написать маску для input на jsСложность заключается в том что в целой части максимум должно быть четыре цифры, а в дробной максимум...

509