собрать массив в строку php

implode

(PHP 4, PHP 5, PHP 7, PHP 8)

implode — Объединяет элементы массива в строку

Описание

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

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

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

По умолчанию равен пустой строке.

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

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

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

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

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

Примеры

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

Примечания

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

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

User Contributed Notes 14 notes

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

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

declare( strict_types = 1 );

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.

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

TRUE became «1», FALSE became nothing.

Also quite handy in INSERT statements:

// build query.
$sql = «INSERT INTO table» ;

Even handier if you use the following:

This threw me for a little while.

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.

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

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

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.

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

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

Источник

http_build_query

http_build_query — Генерирует URL-кодированную строку запроса

Описание

Генерирует URL-кодированную строку запроса из предоставленного ассоциативного (или индексированного) массива.

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

Может быть массив или объект, содержащий свойства.

Если data массив, то он может быть простой одномерной структурой или массивом массивов (который, в свою очередь, может содержать другие массивы).

Если data объект, тогда только общедоступные свойства будут включены в результат.

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

Это позволяет обеспечить допустимые имена переменных, в которые позже данные будут декодированы PHP или другим CGI-приложением.

arg_separator.output используется в качестве разделителя аргументов, но может быть переопределён путём указания этого параметра.

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

Возвращает URL-кодированную строку.

Примеры

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

Результат выполнения данного примера:

Пример #2 Пример использования http_build_query() с числовыми индексами элементов.

Результат выполнения данного примера:

Пример #3 Пример использования http_build_query() с многомерными массивами

Результат выполнения данных примеров: (символы перенесены для удобства чтения)

Только числовой индексированный элемент «CEO» в базовом массиве получил префикс. Другие числовые индексы, найденные в pastimes, не требуют строкового префикса, чтобы быть допустимыми именами переменных.

Пример #4 Пример использования http_build_query() с объектом

$parent = new parentClass ();

Результат выполнения данного примера:

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

User Contributed Notes 24 notes

Params with null value do not present in result string.

If you need to change the enc_type, use this:

http_build_query($query, null, ini_get(‘arg_separator.output’), PHP_QUERY_RFC3986);

// BAD CODE!
http_build_query($query, null, null, PHP_QUERY_RFC3986);

if you send boolean values it transform in integer :

$a = [teste1= true,teste2=false];
echo http_build_query($a)

//result will be teste1=1&teste2=0

This function makes like this

To do it like this:

As noted before, with php5.3 the separator is & on some servers it seems. Normally if posting to another php5.3 machine this will not be a problem.

But if you post to a tomcat java server or something else the & might not be handled properly.

To overcome this specify:

http_build_query($array); //gives & to some servers

It’s not mentioned in the documentation, but when calling http_build_query on an object, public null fields are ignored.

Is it worth noting that if query_data is an associative array and a value is itself an empty array, or an array of nothing but empty array (or arrays containing only empty arrays etc.), the corresponding key will not appear in the resulting query string?
E.g.

$post_data = array(‘name’=>’miller’, ‘address’=>array(‘address_lines’=>array()), ‘age’=>23);
echo http_build_query($post_data);

Instead you can make your own simple function if you simply want to pass along the data:

If you need the inverse functionality, and (like me) you cannot use pecl_http, you may want to use something akin to the following.

Источник

Массив в строку в PHP?

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

11 ответов

потом просто использовать json_decode () для декодирования строки из вашей БД. все остальное бесполезно, JSON сохраняет отношение массива нетронутым для последующего использования!

нет, вы не хотите хранить его как одну строку в своей базе данных.

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

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

вся причина, по которой у вас есть DB, заключается в том, что вы можете выполнять такую работу тривиально. Вам не нужна таблица для хранения массивов, вам нужна таблица, которую вы можете представлять в виде массива.

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

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

один из лучших способов:

почему JSON: вы можете использовать его с большинством языков программирования, строка, созданная функцией serialize () php, читается только в PHP, и вам не понравится хранить такие вещи в своих базах данных, особенно если база данных разделяется между приложениями, написанными на разных языках программирования

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

Если вы не настроены на сериализацию, вы также можете использовать json_encode ()

Источник

Преобразование первого элемента массива в строку в PHP

У меня есть массив PHP и вы хотите преобразовать его в строку.

Этот массив является результатом моей функции PHP, которая возвращает массив:

Как преобразовать это в строку?

Есть ли другой способ преобразования этого массива в строку?

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

Используя array_shift, вам не нужно беспокоиться об индексе.

EDIT : Имейте в виду, array_shift – не единственная функция, которая вернет одно значение. array_pop (), current (), end (), reset (), все они возвратят этот один единственный элемент. Все размещенные решения работают. Используя сдвиг массива, вы можете быть уверены, что получите только первое значение массива, даже если его несколько.

Есть ли другой способ преобразования этого массива в строку?

Простым способом создания массива в массив строк PHP является:

implode или join (они то же самое) будут работать здесь. Кроме того, вы можете просто вызвать array_pop и получить значение единственного элемента в массиве.

Вы можете использовать print_r и html интерпретировать его, чтобы преобразовать его в строку с новыми символами:

Или вы можете смешивать множество массивов и vars, если вы это сделаете

Цикл For() очень полезен. Вы можете добавить значение своего массива к следующей переменной:

Это строка, но у нее есть дополнительная запятая 🙂

Поскольку проблема с пробелами возникает только при экспорте массивов, вы можете использовать исходный var_export () для всех других типов переменных. Эта функция выполняет задание и снаружи работает так же, как var_export ().

Преобразование массива в строку в PHP:

Используйте функцию join PHP следующим образом:

Что ограничивает элементы массива запятой в строку:

Или используйте функцию implode PHP следующим образом:

Вот что произойдет, если вы присоедините или коснитесь пары значений ключа в массиве PHP

Используйте встроенную функцию в PHP, implode(array, separator) :

Результат: parth / raja / nikhar

Преобразование массива в строку в PHP:

Используйте функцию join PHP следующим образом:

Что ограничивает элементы массива запятой в строку:

Для полноты и простоты, должно быть хорошо:

Это хорошо работает в моем случае, но другие, похоже, имеют проблемы с пробелами. В этом случае ответ ucefkh обеспечивает обходное решение из комментария в руководстве PHP.

Источник

array_combine

array_combine — Создаёт новый массив, используя один массив в качестве ключей, а другой для его значений

Описание

Создаёт массив ( array ), используя значения массива keys в качестве ключей и значения массива values в качестве соответствующих значений.

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

Массив ключей. Некорректные значения для ключей будут преобразованы в строку ( string ).

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

Ошибки

Примеры

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

Результат выполнения данного примера:

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

User Contributed Notes 21 notes

If two keys are the same, the second one prevails.

But if you need to keep all values, you can use the function below:

Further to loreiorg’s script
in order to preserve duplicate keys when combining arrays.

I have modified the script to use a closure instead of create_function

Reason: see security issue flagged up in the documentation concerning create_function

// If they are not of same size, here is solution:

// Output
// Array ( [AL] => Alabama [AK] => Alaska [AZ] => Arizona
// [AR] => Arkansas )
?>

This will seem obvious to some, but if you need to preserve a duplicate key, being you have unique vars, you can switch the array_combine around, to where the vars are the keys, and this will output correctly.

This [default] formula auto-removes the duplicate keys.

This formula accomplishes the same thing, in the same order, but the duplicate «keys» (which are now vars) are kept.

I know, I’m a newbie, but perhaps someone else will need this eventually. I couldn’t find another solution anywhere.

I was looking for a function that could combine an array to multiple one, for my MySQL GROUP_CONCAT() query, so I made this function.

I needed a function that would take keys from one unequal array and combine them with the values of another. Real life application:
Select 4 product types.
Each product has a serial.
There are 4 sets of products.

Array
(
[0] => Array
(
[SMART Board] => serial to smart board1
[Projector] => serial to projector 1
[Speakers] => serial to speakers 1
[Splitter] => serials to splitter 1
)

[1] => Array
(
[SMART Board] => serials to smart board 2
[Projector] => serials to projector 2
[Speakers] => serials to speakers 2
[Splitter] => serials to splitter 2
)

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *