В этой статье разберем как преобразовывать массив в строку и обратно.
Есть два способа преобразовать массив в строку в PHP.
- Использование функции implode()
- Использование функции 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 петли. Нужно сделать просто отлично.