Php ассоциативный массив в строку

В этой статье разберем как преобразовывать массив в строку и обратно.

Есть два способа преобразовать массив в строку в PHP.

  1. Использование функции implode()
  2. Использование функции json_encode()

Использование функции implode()

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

В приведенном выше примере в первой строке объявлена ​​переменная массива и ей присвоены некоторые значения.

На следующей строке функция implode() преобразует массив в строку. Два параметра передаются в функцию implode(). Первый — это разделитель, а второй — массив.

Вы также можете преобразовать полученную строку если требуется обратно в массив. Для этого мы можем использовать функцию PHP explode().

Функция explode()

Используя функцию explode(), мы можем преобразовать строку в элементы массива. Мы можем передать три аргумента. Первый разделитель, второй массив и последний лимит (ограничение длинны).

В приведенном выше примере строковой переменной присваивается некоторое значение. Затем функция explode() разбивает эту строку на массив. После этого мы использовали функцию print_r(), которая печатает все элементы массива и его индексы.

Использование функции json()

В PHP объекты могут быть преобразованы в строку JSON с помощью функции json_encode().

Обычное использование JSON — это чтение данных с веб-сервера и отображение данных на веб-странице.

В приведенном выше примере мы присвоили значение переменной объекта, а затем в json_encode() преобразовали значение в переменную массива и создали ассоциативный массив.

У меня есть ассоциативный массив:

Мне нужно , чтобы ключ и значение были в таком формате: action=index.php method=POST

2 ответа 2

Как уже сказали, если ключи не изменяются, можно просто записать в строку, а, если массив произвольный, я бы предложил использовать обычный foreach

всегда имеют такой формат, то есть два ключа — action и method , как ни странно, проще чего будет прсто взять и сформировать строку

Если речь идет про произвольный массив, то можно поступить как-то так

либо можно воспользоваться функцией http_build_query , что, конечно, не совсем по назначению:

У меня есть простой шаблонный движок, и у меня проблема с предоставлением ему данных из массива Assoc. Кто-нибудь может дать мне совет? В методе getStatisticData Я даю массив ассоциаций в качестве первой переменной $data , Мой входной массив имеет вид:

Я пытаюсь получить данные с помощью foreach но это не работает Я получаю уведомление

Примечание: преобразование массива в строку в C: Server htdocs Task lib TemplateGen.php в строке 34

getReplaceContent и связанные методы из TemplateGen.php :

ОБНОВИТЬ:

Я получил 2 новые ошибки

Предупреждение: implode (): неверные аргументы переданы в C: Server htdocs Task lib TemplateGen.php в строке 28
Неустранимая ошибка: невозможно повторно объявить add_percent () (ранее объявленный в C: Server htdocs Task lib TemplateGen.php: 25) в C: Server htdocs Task lib TemplateGen.php в строке 25

UPDATE2:
Теоретически все, что предусмотрено в новом методе, должно работать очень хорошо. Но есть те же проблемы, которые были в начале

Примечание: преобразование массива в строку в C: Server htdocs Task lib TemplateGen.php в строке 44`
строка 44:

Но если я использую мой getStatisticData вместо твоего он работает но есть много других ошибок
Мой метод:

Решение

Ваш код в настоящее время довольно неэффективен, и это приводит к некоторым проблемам. Давайте посмотрим на первый метод, который вы опубликовали:

foreach цикл делает то же самое для каждой пары ключ / значение (плюс $data[$key] = $value является избыточным, так как вы уже получаете каждый ключ и значение в foreach loop), чтобы вы могли исключить цикл и заменить его следующим образом:

Аналогично для getReplaceContent — вы в основном используете ключи массива и значения массива в качестве значений поиска и замены. Вы можете использовать удобный PHP array_keys а также array_values вместо создания новых массивов. Подвох в том, что ключи массива должны быть окружены % , но это легко сделать с помощью array_map — просто определите функцию, которая будет принимать строку и добавить % к любому концу, а затем array_map это к вашим ключам массива:

Теперь звоню getStatisticData вернет текст шаблона со всеми замененными данными в нем.

Выход из getStatisticData :

РЕДАКТИРОВАТЬ: из ОП не ясно, что вход в getStatisticData есть, но похоже, что это должен быть массив ассоциативных массивов. Если это так, код для getStatisticData следует изменить следующим образом:

Другие решения

Я предполагаю, что в ассоциативном массиве $ data есть просто строки. Я предполагаю, что массив $ data имеет свои ключи в качестве заполнителя шаблона и значение в качестве значения для ввода.

Если это так, и если вы пытаетесь получить одну строку, то подумайте об этом:

Вам не нужно так много foreach петли. Нужно сделать просто отлично.

Оцените статью
Много толка
Добавить комментарий