Как я могу превратить такой массив без foreach
array("item1"=>"object1", "item2"=>"object2",......."item-n"=>"object-n");
к такой строке
item1='object1', item2='object2',.... item-n='object-n'
Я implode()
уже думал об этом , но это не взрывает ключ.
Если foreach это необходимо, можно ли не вкладывать foreach?
РЕДАКТИРОВАТЬ: я изменил строку
EDIT2 / UPDATE: этот вопрос был задан довольно давно. В то время я хотел написать все в одной строке, чтобы использовать тернарные операторы и вложить встроенные вызовы функций в пользу foreach. Это не было хорошей практикой! Пишите код, который можно читать, краткий он или нет, не имеет большого значения.
В этом случае: включение foreach в функцию будет намного более читабельным и модульным, чем написание однострочника (даже если все ответы отличные!).
Ответы:
и другой способ:
или:
источник
echo "Hello, World!";
Должен ли я видеть примеры кода этих функций?array_fill(0, $input, 'selected-value-you want-to-check-against');
Это создаст массив одинакового размера с одним значением для всех строк.Вы можете использовать http_build_query , например:
Вывод:
Демо
источник
http_build_query
.http_build_query
в ,urldecode
чтобы избежать этого.Провёл замеры (100000 итераций), какой самый быстрый способ приклеить ассоциативный массив?
Задача: получить строку из 1000 элементов в следующем формате: «ключ: значение, ключ2: значение2».
У нас есть массив (например):
Тест номер один:
Используйте http_build_query и str_replace :
Среднее время взрыва 1000 элементов: 0,00012930955084904
Тест номер два:
Используйте array_map и взрывать :
Среднее время взрыва 1000 элементов: 0,0004890081976675
Тест номер три:
Использование array_walk и взрывать :
Среднее время взрыва 1000 элементов: 0,0003874126245348
Тест номер четыре:
Используйте foreach :
Среднее время взрыва 1000 элементов: 0,00026632803902445
Могу сделать вывод, что лучший способ склеить массив - использовать http_build_query и str_replace
источник
$s = ''; foreach ($array as $k=>$v) { if ($s !== null) { $s .= ','; } $s .= "{$k}:{$v}"; }
превосходит всех остальных.substr(str_replace('"', '', json_encode($headers)), 1, -1);
http_build_query
Заменяет пробелы со знаком плюс (+
) характер.Я бы использовал
serialize()
илиjson_encode()
.Хотя он не даст вам точной строки результата, которую вы хотите, было бы намного проще кодировать / хранить / извлекать / декодировать позже.
источник
Использование array_walk
IDEONE
источник
create_function
вместо того, чтобы просто использовать анонимную функцию?+ Изменить
если вы хотите вернуть всю строку без последнего клея $
И использование:
источник
В целях отладки. Рекурсивно записывает массив вложенных массивов в строку. Используется foreach. Функция хранит символы национального языка.
источник
Вы также можете использовать PHP array_reduce ,
источник
Для создания mysql, где условия из массива
источник
Также существуют var_export и print_r, более известные для вывода отладочной информации, но обе функции могут принимать необязательный аргумент для возврата вместо этого строки.
Используя пример из вопроса в качестве данных.
Использование
print_r
для преобразования массива в строкуЭто выведет удобочитаемое представление переменной.
Выведет:
Использование
var_export
для преобразования массива в строкуБудет выведено строковое представление переменной на php.
Выведет:
Поскольку это действительный php, мы можем его оценить.
Выходы:
источник
Вот простой пример с использованием класса:
источник