Как поместить PHP ‘for loop’ в одну переменную (для использования электронной почты)?

#php

#php

Вопрос:

Я пытаюсь включить цикл ‘for’ (повторяющийся элемент с динамическим содержимым) внутри одной переменной, которая затем используется в качестве ‘тела’ электронного письма.

Я пробовал использовать EOD — поскольку я по сути повторяю текст и соответствующие переменные, но, похоже, это не принимает цикл ‘for’. Простите навыки новичка в PHP. Спасибо.

Я пытаюсь сделать что-то вроде этого:

 $body = 
for ($prod_count = 1; $prod_count <= $_SESSION['review_counter']; $prod_count  ) {
...
loop over relevant incremental variables
...
};
  

…позже этот $body используется во что-то вроде (вот почему я хочу его как единую переменную)…

 $success = mail($webMaster, $emailSubject, $body, $headers);
  

Ответ №1:

Взгляните на foreach

https://www.php.net/manual/en/control-structures.foreach.php

С помощью простого for ваш код должен выглядеть примерно так: ниже

 for ($prod_count = 1; $prod_count <= $_SESSION['review_counter']; $prod_count  ) {
    $body[$prod_count] = "something";
};
  

Комментарии:

1. Разве это не даст мне несколько переменных $body, к которым добавляется число? ie: $body1, $ body2 и т.д. Мне нужна одна переменная $body, которая содержит динамический номер повторяющегося элемента.

2. Это даст вам массив с именем $body, где вы можете получить доступ к каждой переменной с помощью $body [1], $body [2] и т. Д

3. Спасибо за быстрый ответ — очень признателен. Я использую это и функцию implode, чтобы собрать массив в одну строку.

4. Пожалуйста, подумайте о том, чтобы отметить ответ, если это помогло вам решить вашу проблему. Таким образом, другие пользователи с той же проблемой легко найдут ее

Ответ №2:

Создайте функцию, подобную приведенной ниже, и верните переменную $body, которую вы можете отправить по электронной почте.

 <code>
  function generate_body_text($prod_count) {
  $body = '';
  for($prod_count = 1; $prod_count <= $_SESSION['review_counter']; $prod_count  ) {
    //your logic
  };  
  return $body;
  }

  $body = generate_body_text($prod_count);
  $success = mail($webMaster, $emailSubject, $body, $headers);
</code> 
  

Комментарии:

1. Спасибо. Этот функциональный метод также выглядит хорошо. Я использовал описанный выше метод, преобразовав массив в одну строку. (Я принял метод array — но у меня нет опыта, чтобы знать, лучше это или нет, или по каким причинам).

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