Задать вопрос
@Narts

Можно как-нибудь оптимизировать цикл?

Привет!
На входе имеется массив, например array("hello" => "world", "how" => "are", "you" => "dude").
Нужно на выходе получить hello=worldhow=areyou=dude.

Делаю это так:
$res = '';
foreach ($params as $key => $value) {
	$res .= $key.'='.$value;
}


Может есть какое-нибудь более изящное решение, функция, которая склеит массив в строку, поставив = между ключами и значениями?
Пробовал с помощью http_build_query, но там он ставит & между ключами
  • Вопрос задан
  • 118 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
maddog670
@maddog670
$arr = array("hello" => "world", "how" => "are", "you" => "dude");
echo str_replace(["&", "?"], '', http_build_query($arr));
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
index0h
@index0h
PHP, Golang. https://github.com/index0h
Ваш иcходный вариант оптимален. Вызов http_build_query вводит в заблуждение, так как у вас строка не имеет ничего общего с http query.
Ответ написан
Комментировать
rozhnev
@rozhnev Куратор тега PHP
Fullstack programmer, DBA, медленно, дорого
Вы можете использовать для этого array_reduce

<?php
$arr = array("hello" => "world", "how" => "are", "you" => "dude");

$result =  array_reduce(
	array_keys($arr),
	function($acc, $key) use ($arr) {
		return $acc . $key . '=' . $arr[$key];
	},
	''
);

echo $result;


Код можно запустить на PHPize.online
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы