Вывести значения массива через запятую php

Конвертировать массив в строку при помощи PHP

Если вам потребовалось преобразовать массив php в строку, то для этого есть несколько инструментов. Применение того или иного инструмента зависит от ваших целей.

Если вы ищете как решить проблему «PHP Notice: Array to string conversion in . «, то это значит, что вы, в каком-то месте вашего кода используете массив, но обрабатываете его как строку.

$array = [1,2,3]; echo $array; // Notice

Вы получите «Notice» в строке echo $array , поскольку функция echo предназначеня для вывода строк, а не массивов.

Теперь поговорим о конвертации массива в строку:

1. Функция implode()

С ее помощью можно «склеить» элементы массива в строку, через любой разделитель. Подробнее: implode
Пример:

echo implode('|', array(1, 2, 3)); // выдаст строку: 1|2|3

Подобным образом мы можем преобразовать только одномерные массивы и у нас пропадут ключи.

У этой функции есть антагонист explode , который наоборот преобразует строку в массив по разделителю.

2. Функция join()

Работает точно так же как и implode(), поскольку это просто псевдоним, выбирайте название, которое больше нравится.

Пример у нас будет идентичный:

echo join('|', array(1, 2, 3)); // выдаст строку: 1|2|3

3. Функция serialize()

Основная задача функции — преобразование переменной (в нашем случае массива) в состояние пригодное для хранения.
Она используется для сохранения массива в строку, для ее последующего преобразования обратно в массив. Вы можете сохранить массив в файл или базу данных, а затем, при следующем выполнении скрипта восстановить его.
Подробнее: serialize

$array = array( ‘1’ => ‘elem 1’, ‘2’=> ‘elem 2’, ‘3’ => ‘elem 3’); $string = serialize($array); echo $string; // выдаст строку: a:3:

Затем из этой строки, можно снова получить массив:

4. Функция json_encode()

Возвращает JSON представление данных. В нашем случае, данная функция, напоминает сериализацию, но JSON в основном используется для передачи данных. Вам придется использовать этот формат для обмена данными с javascript, на фронтенде. Подробнее: json_encode

$array = array( 1 => ‘one’, 2 => ‘two’, ); $json = json_encode($array); echo $json; //

Обратная функция json_decode() вернет объект с типом stdClass, если вторым параметром функции будет false. Либо вернет ассоциативный массив, если передать true вторым параметром

5. Функция print_r

Она подходит для отладки вашего кода. Например вам нужно вывести массив на экран, чтобы понять, какие элементы он содержит.

$array = [ 'param1' => 'val1', 'param2' => 'val2', ]; print_r($array); /* выводит на экран: Array ( [param1] => val1 [param2] => val2 ) */

6. Функция var_dump

Функция var_dump также пригодится для отладки. Она может работать не только с массивами, но и с любыми другими переменными, содержимое которых вы хотите проверить.

$array = [ 'param1' => 'val1', 'param2' => 'val2', ]; var_dump($array); /* выводит на экран: array(2) < ["param1"]=>string(4) "val1" ["param2"]=> string(4) "val2" > */

7. Функция var_export

Эта функция преобразует массив интерпритируемое значение, которое вы можете использовать для объявление этого массива. Иными словами, результат этой функции — програмный код.

$array = [ 'param1' => 'val1', 'param2' => 'val2', ]; var_export($array); /* выводит на экран: array ( 'param1' => 'val1', 'param2' => 'val2', ) */

Обратите внимание, что функции print_r , var_dump , var_export выводят результат сразу на экран. Это может быть удобно, т.к. эти функции все равно используются в основном для отладки, но при желании вы можете записать результат их выполнения в переменную. Для print_r и var_export для этого нужно установить второй параметр в true:

$result1 = print_r($array, true); $result2 = var_export($array, true);

var_dump не возвращает значение, но при желании это конечно можно сделать через буферизацию.

array_to_string

Как таковой функции array_to_string в php нет, но есть описанные выше инструменты, которых более чем достаточно для выполнения задачи. Я просто хотел напомнить, что вы никогда не ограничены этими инструментами, и можете написать то, что подходит именно под вашу задачу.

function array_to_string($array)

Как сделать работу с массивами еще проще?

Если вы используете библиотеку для работы с коллекциями, то ваш код для преобразования массива в строку может выглядеть куда более изящно:

echo collect(['a', 'b', 'c'])->implode(','); // a,b,c echo collect(['a', 'b', 'c'])->toJson(); // ["a","b","c"]

Также рекомендую обратить внимание на полезную библиотеку для работы со строками. С ее помощью вы можете выполнять операции со строками более удобно и с меньшим количеством кода.

На этом все. Обязательно прочитайте справку по данным функциям и пишите если у вас остались вопросы.

Источник

implode

Альтернативная сигнатура (не поддерживается с именованными аргументами):

Устаревшая сигнатура (устарела с PHP 7.4.0, удалена в PHP 8.0.0):

Объединяет элементы массива с помощью строки separator .

Список параметров

Необязательный. По умолчанию равен пустой строке.

Массив объединяемых строк.

Возвращаемые значения

Возвращает строку, содержащую строковое представление всех элементов массива в указанном порядке, с разделителем между каждым элементом.

Список изменений

Версия Описание
8.0.0 Передача separator после array больше не поддерживается.
7.4.0 Передача separator после array (т.е. использование недокументированного порядка параметров) устарела.

Примеры

Пример #1 Пример использования implode()

$array = [ ‘имя’ , ‘почта’ , ‘телефон’ ];
var_dump ( implode ( «,» , $array )); // string(32) «имя,почта,телефон»

// Пустая строка при использовании пустого массива:
var_dump ( implode ( ‘привет’ , [])); // string(0) «»

// Параметр separator не обязателен:
var_dump ( implode ([ ‘a’ , ‘b’ , ‘c’ ])); // string(3) «abc»

Примечания

Замечание: Эта функция безопасна для обработки данных в двоичной форме.

Смотрите также

  • explode() — Разбивает строку с помощью разделителя
  • preg_split() — Разбивает строку по регулярному выражению
  • http_build_query() — Генерирует URL-кодированную строку запроса

User Contributed Notes 14 notes

it should be noted that an array with one or no elements works fine. for example:

$a1 = array( «1» , «2» , «3» );
$a2 = array( «a» );
$a3 = array();

echo «a1 is: ‘» . implode ( «‘,'» , $a1 ). «‘
» ;
echo «a2 is: ‘» . implode ( «‘,'» , $a2 ). «‘
» ;
echo «a3 is: ‘» . implode ( «‘,'» , $a3 ). «‘
» ;
?>

will produce:
===========
a1 is: ‘1’,’2′,’3′
a2 is: ‘a’
a3 is: »

It’s not obvious from the samples, if/how associative arrays are handled. The «implode» function acts on the array «values», disregarding any keys:

$a = array( ‘one’ , ‘two’ , ‘three’ );
$b = array( ‘1st’ => ‘four’ , ‘five’ , ‘3rd’ => ‘six’ );

echo implode ( ‘,’ , $a ), ‘/’ , implode ( ‘,’ , $b );
?>

outputs:
one,two,three/four,five,six

Can also be used for building tags or complex lists, like the following:

?>

This is just an example, you can create a lot more just finding the right glue! 😉

It might be worthwhile noting that the array supplied to implode() can contain objects, provided the objects implement the __toString() method.

class Foo
protected $title ;

public function __construct ( $title )
$this -> title = $title ;
>

public function __toString ()
return $this -> title ;
>
>

$array = [
new Foo ( ‘foo’ ),
new Foo ( ‘bar’ ),
new Foo ( ‘qux’ )
];

echo implode ( ‘; ‘ , $array );
?>

will output:

If you want to implode an array of booleans, you will get a strange result:
var_dump ( implode ( » ,array( true , true , false , false , true )));
?>

Output:
string(3) «111»

TRUE became «1», FALSE became nothing.

If you want to implode an array as key-value pairs, this method comes in handy.
The third parameter is the symbol to be used between key and value.

function mapped_implode ( $glue , $array , $symbol = ‘=’ ) return implode ( $glue , array_map (
function( $k , $v ) use( $symbol ) <
return $k . $symbol . $v ;
>,
array_keys ( $array ),
array_values ( $array )
)
);
>

echo mapped_implode ( ‘, ‘ , $arr , ‘ is ‘ );

// output: x is 5, y is 7, z is 99, hello is World, 7 is Foo

Sometimes it’s necessary to add a string not just between the items, but before or after too, and proper handling of zero items is also needed.
In this case, simply prepending/appending the separator next to implode() is not enough, so I made this little helper function.

function wrap_implode ( $array , $before = » , $after = » , $separator = » ) if( ! $array ) return » ;
return $before . implode ( » < $after >< $separator > < $before >» , $array ) . $after ;
>

echo wrap_implode ([ ‘path’ , ‘to’ , ‘file.php’ ], ‘/’ );
// «/path/to/file.php»

$pattern = ‘#’ . wrap_implode ([ 4 , 2 , 2 ], ‘\d’ , ‘[-.]’ ) . ‘#’ ;
echo $pattern , «\n» ; // #\d[-.]\d[-.]\d#
echo preg_replace ( $pattern , ‘[REDACTED]’ , ‘The UFO appeared between 2012-12-24 and 2013.01.06 every night.’ );
// ‘The UFO appeared between [REDACTED] and [REDACTED] every night.

echo wrap_implode ([ ‘line’ , ‘by’ , ‘line’ ], ‘‘ , ‘‘ , ‘
‘ );
// line
by
line

It may be worth noting that if you accidentally call implode on a string rather than an array, you do NOT get your string back, you get NULL:
var_dump ( implode ( ‘:’ , ‘xxxxx’ ));
?>
returns
NULL

This threw me for a little while.

Even handier if you use the following:

$id_nums = array( 1 , 6 , 12 , 18 , 24 );

$id_nums = implode ( «, » , $id_nums );

$sqlquery = «Select name,email,phone from usertable where user_id IN ( $id_nums )» ;

// $sqlquery becomes «Select name,email,phone from usertable where user_id IN (1,6,12,18,24)»
?>

Be sure to escape/sanitize/use prepared statements if you get the ids from users.

null values are imploded too. You can use array_filter() to sort out null values.

$ar = array( «hello» , null , «world» );
print( implode ( ‘,’ , $ar )); // hello,,world
print( implode ( ‘,’ , array_filter ( $ar , function( $v )< return $v !== null ; >))); // hello,world
?>

If you want to use a key inside array:

Example:
$arr=array(
array(«id» => 1,»name» => «Test1»),
array(«id» => 2,»name» => «Test2»),
);

echo implode_key(«,»,$arr, «name»);
OUTPUT: Test1, Test2

function implode_key($glue, $arr, $key) $arr2=array();
foreach($arr as $f) if(!isset($f[$key])) continue;
$arr2[]=$f[$key];
>
return implode($glue, $arr2);
>

It is possible for an array to have numeric values, as well as string values. Implode will convert all numeric array elements to strings.

$test = implode ([ «one» , 2 , 3 , «four» , 5.67 ]);
echo $test ;
//outputs: «one23four5.67»
?>

There is no mention of behavior on a empty array, so I tried it and here’s the result:

$ar = array();
$result = implode ( ‘,’ , $ar ); // Comma arbitrarily applied as the separator
$is_result_empty = empty( $result );
?>

$result:
$is_result_empty: 1

In other words, an empty string is the result.

* Join pieces with a string recursively .
*
* @ param mixed $glue String between pairs ( glue ) or an array pair ‘s glue and key/value glue or $pieces.
* @param iterable $pieces Pieces to implode (optional).
* @return string Joined string
*/
function double_implode($glue, iterable $pieces = null): string
$glue2 = null;
if ($pieces === null) $pieces = $glue;
$glue = »;
> elseif (is_array($glue)) list($glue, $glue2) = $glue;
>

$result = [];
foreach ($pieces as $key => $value) $result[] = $glue2 === null ? $value : $key . $glue2 . $value;
>
return implode($glue, $result);
>
?>
Examples:
$array = [‘ a ‘ => 1, ‘b’ => 2];
$str = implode($array);
$str = implode(‘ , ‘, $array);
$str = implode([‘» ‘, ‘ keyword»>, ‘, $iterator);
$str = implode([‘» ‘, ‘ foot»>+add a note

Источник

PHP. implode по одному полю многомерного массива

Данный материал предоставлен сайтом PacificSky.Ru исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.

Выводим результат одного из полей многомерного массива в строку через запятую.

Представим, что нам понадобилось запросить данные из базы данных и результат одной из колонок вывести через запятую.
В своем примере в роли данных из БД, выступает массив $array. Который содержит: id, login и password.
Необходимо получить все логины (login) и вывести их в строку через запятую.
Конечно можно было воспользоваться foreach и результат элемента с ключом login записывать через запятую в переменную, но я считаю, что есть более быстрый и изящный вариант. Для этого воспользуемся php функциями: array_map и implode:

$array = [ [ 'id' => 1, 'login' => 'Alex', 'password' => '*******' ], [ 'id' => 2, 'login' => 'Fixlix', 'password' => '*******' ], [ 'id' => 3, 'login' => 'Pacific', 'password' => '*******' ], [ 'id' => 4, 'login' => 'Sky', 'password' => '*******' ] ]; echo implode(', ', array_map(function ($value) { return $value['login']; >, $array));

Callback функция array_map перебирает массив $array и возвращает данные только из поля login:

array_map(function ($value) { return $value['login']; >, $array)

Функция implode берет значения массива и возвращает эти значения в виде строки, через запятую (Запятая указана первым параметром в функции implode, но вы можете указывать тот символ, который требуется вам).

Источник

Читайте также:  Обратная функция нормального распределения python
Оцените статью