Как удалить последнюю запятую из вывода цикла for

Задача состоит в том, чтобы написать цикл for для вывода в браузер квадратных чисел, которые не делятся на 3. Я не получаю ожидаемого результата: 1,4,16,25,49,64,100.



<html lang="en">
    <head>
        <title>Square Numbers</title>
    </head>
    <body>
        <?php
            for ($a=1;$a<=10;$a++){
                if ($a % 3 != 0){
                    echo $a * $a . ",";
                }
            }
        ?>


    </body>
</html>

php
person Community    schedule 09.09.2019    source источник


Ответы (3)


Одним из распространенных методов является добавление их в массив, а затем использование implode для присоединения их с помощью связующей строки ("," для вашего случая). Таким образом, нет необходимости знать, когда массив закончится.

<html lang="en">
    <head>
        <title>Square Numbers</title>
    </head>
    <body>
        <?php
            $values = array();
            for ($a=1;$a<=10;$a++){
                if ($a % 3 != 0){
                    $values[] = $a * $a;
                }
            }
            echo implode(',', $values);
        ?>


    </body>
</html>
person Koala Yeung    schedule 09.09.2019

Решение без создания дополнительного массива:

<html lang="en">
    <head>
        <title>Square Numbers</title>
    </head>
    <body>
        <?php
            for ($a=1;$a<=10;$a++){
                if ($a % 3 != 0){
                    echo ($a * $a) . ($a < 10 ? "," : "");
                }
            }
        ?>
    </body>
</html>
person Claudio    schedule 09.09.2019

Вероятно, самый чистый способ — поместить результаты в массив, а затем implode он использует , в качестве клея на выходе:

$result = [];

for ($a=1;$a<=10;$a++){
    if ($a % 3 != 0){
        $result[] = $a * $a;
    }
}

echo implode(",", $result); // 1,4,16,25,49,64,100

Implode объединяет элементы массива с указанной строкой (называемой «клеем»):

implode ( string $glue , array $pieces ) : string

Вы можете увидеть это в действии здесь

person Brett Gregson    schedule 09.09.2019
comment
Не уверен, почему это также не получило одобрения... позвольте мне исправить - person Nick; 10.09.2019