Вставить переменную String в массив

Я использую SMTP Sendinblue в своем проекте PHP, и я хочу отправлять электронные письма с транзакциями в динамический список электронных писем, проблема в том, что у меня есть синтаксическая ошибка, когда я использую переменную вместо строки. Например, такой код отлично работает:

    include 'Mailin.php';
    $mailin = new Mailin('[email protected]', 'key');
    $mailin->
    addTo(
        array(
                 '[email protected]' => '', '[email protected]' => '', '[email protected]' => ''
            )
    )->

    setFrom('[email protected]', 'Test')->
    setReplyTo('[email protected]', 'Test')->
    setSubject('Example')->
    setText('Test')->
    setHtml($htmlContent);
    $res = $mailin->send();
    print_r($res);

Но если я использую переменную вместо Strings в "addTo Array", это показывает синтаксическую ошибку, например:

    $customers = '';
    foreach ($clientes as $customer) {

        for ($i=1; $i < 41; $i++) { 

            if ($customer['email'.$i]  != "" or $customer['email'.$i] != NULL) {

                $customers .= "'".$customer['email'.$i]. "' => '', " ; //for each customer's email add the email in " '[email protected]' => '', " format
            }
        }
    }

    $customers = substr($customers, 0, -2); //removes last space and comma of the String

    include 'Mailin.php';
    $mailin = new Mailin('[email protected]', 'key');
    $mailin->
    addTo(
        array(
                 $customers
            )
    )->

    setFrom('[email protected]', 'Test')->
    setReplyTo('[email protected]', 'Test')->
    setSubject('Example')->
    setText('Test')->
    setHtml($htmlContent);
    $res = $mailin->send();
    print_r($res);

Если я использую функцию Print_r ($ customers), она показывает точную строку, которую я использовал в моем первом примере, даже если я использую код:

    $text = "'[email protected]' => '', '[email protected]' => '', '[email protected]' => ''";

    if ($customers == $text) {
        print_r("Yes");
    }else{
        print_r("No");
    }

Результат - «Да», но когда я использую переменную в

    addTo(
        array(
                 $customers
            )
    )->

показывает ошибку, но если я использую строку напрямую, электронное письмо отправляется

    addTo(
        array(
                 '[email protected]' => '', '[email protected]' => '', '[email protected]' => ''
            )
    )->

И я не знаю, почему он показывает ошибку, если в переменной $ customers есть нужная строка.

Вы знаете, как использовать переменную в электронных письмах, которые мне нужно отправить?

Почему бы просто не построить массив $customer вместо строки?

Kisaragi 09.08.2018 18:42

Какую ошибку вы получаете? Также вы можете подумать о создании массива, а не о предоставлении электронных писем в виде строки

Kapil gopinath 09.08.2018 18:46

Потому что Sendinblue принимает только этот формат

Pahoran Alanis 09.08.2018 18:47

Ошибка: {"результат": ложь, "код": 501, "сообщение": "Невозможно отправить электронное письмо. Сообщение об исключении: Ошибка: неверный синтаксис адреса получателя.", "Данные": {"идентификатор-сообщения": ""}}

Pahoran Alanis 09.08.2018 18:48
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
123
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы не создаете массив, объединяя строки с => в них. Чтобы создать элемент в ассоциативном массиве, просто присвойте этому массиву индекс.

$customers = [];
foreach ($customers as $customer) {
    for ($i = 1; $i < 41; $i++) {
        if (!empty($customer["email" . $i])) {
            $customers[$customer["email" . $i]] = "";
        }
    }
}
include 'Mailin.php';
$mailin = new Mailin('[email protected]', 'key');
$mailin->
addTo($customers)->
...

Также см. Почему проверка на равенство одной переменной нескольким значениям всегда возвращает истину?, почему вам следовало использовать &&, а не ||, когда вы пропускали пустые электронные письма (что я упростил, используя !empty()).

Другие вопросы по теме