Преобразовать массив PHP в одну переменную

#php #arrays #email #variables #carbon-copy

#php #массивы #Адрес электронной почты #переменные #копирование под копирку

Вопрос:

То, что я пытаюсь сделать, это проанализировать адреса CC из некоторых почтовых заголовков с помощью PHP, они передаются в виде массива (как ни странно, даже если это всего один адрес). И я хотел бы просто преобразовать массив в одну длинную переменную.

Так, например, если бы у меня был следующий массив: array (bob@example.com , bill@example.com );

Затем я хочу преобразовать это в одну переменную, которая может быть чем-то вроде ‘bob@example.com ,bill@example.com ‘

Я пробовал несколько вещей, и главное, что, по моему мнению, должно было сработать, было следующее:

 $ccList[]=$headerinfo->cc;   

foreach( $ccList as $key=>$val ){
   $ccAddress .= $val.","; 
   }
Sys::log(LOG_ALERT,'CC Address is..'.$ccAddress);
 

но когда я получаю этот файл журнала, в нем говорится: «Адрес CC есть…Массив,»

Есть ли какой-нибудь способ выполнить то, что я хочу? Я должен отметить, что в качестве его адресов CC я не всегда буду знать, являются ли его 0 адресами или несколькими или где-то между ними.

Я также попробовал несколько действий с print_r и var_dump, но они не вернули результаты, которые я ожидал увидеть (адреса электронной почты). Я думаю, что var_dump все еще показывал «Массив» (или ничего), а print_r просто сказал «Адрес CC равен … 1».

Любая помощь приветствуется.

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

1. Сначала проверьте с помощью var_dump, что находится в переменной $val. В любом случае я не понимаю, как вы инициализируете переменную $ccAddress.

2. echo $key и $val. Убедитесь, что у вас есть ccList.

Ответ №1:

http://php.net/manual/en/function.implode.php взгляните сюда.

 $newccAddress = implode(",", $ccAddress);
 

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

1. Когда я повторяю ключ / значение, я получаю: ключ равен ..0 Значение равно.. Массив, но вывод вашей команды таков: «newCC Адрес внешнего цикла — это ..»

2. адаптируйте метод implode к вашему случаю. implode создает одну переменную, как вы хотели, но ваша проблема сильно отличается от создания одной переменной. убедитесь, что вы получаете из $headerinfo-> cc;

3. Да, чего я не понимаю, так это того, что когда я печатаю $headerinfo-> cc, я получаю «Массив», но когда я печатаю var_dump($headerinfo-> cc), я ничего не получаю. Проблема заключается в том, что это делается с помощью функции, поэтому мне нужно распечатать журнал панели мониторинга, чтобы увидеть результаты. Разве вывод «Array» не предполагает, что он не пустой?

4. вздох, я пошел дальше в своем коде и исследовал imap_headerinfo. Оказывается, есть как cc, так и ccaddress, которые вы можете использовать. Вместо этого я просто использовал ccaddress, и он дает мне именно то, что я хочу. в любом случае, спасибо, ребята, implode — это то, что мне было нужно в противном случае!

Ответ №2:

Вы хотите использовать implode функцию. Как в, $result = implode(',', array(bob@example.com, bill@example.com)) , который вернет ваш результат.

http://php.net/manual/en/function.implode.php

Ответ №3:

В этом примере вы можете использовать implode() , выключив причину

Если говорить о «преобразовании PHP-массива в одну переменную» в целом, то именно здесь вы захотите взглянуть на array_reduce() beast .