Estou procurando uma maneira rápida de transformar uma matriz associativa em uma string. A estrutura típica seria como uma string de consulta de URL, mas com separadores personalizáveis para que eu pudesse usar ' &
' para links xhtml ou ' &
' de outra forma.
Minha primeira inclinação é usar, foreach
mas como meu método pode ser chamado muitas vezes em uma solicitação, temo que seja muito lento.
<?php
$Amp = $IsXhtml ? '&' : '&';
$Parameters = array('Action' => 'ShowList', 'Page' => '2');
$QueryString = '';
foreach ($Parameters as $Key => $Value)
$QueryString .= $Amp . $Key . '=' . $Value;
Existe uma maneira mais rápida?
Respostas:
Você pode usar
http_build_query()
para fazer isso.fonte
http_build_query
escapar char especialComo um aparte, eu estava procurando encontrar a melhor maneira de implodir uma matriz associativa, mas usando meus próprios separadores etc ...
Então, fiz isso usando a função array_walk () do PHP para me permitir juntar um array associativo em uma lista de parâmetros que poderiam ser aplicados a uma tag HTML ....
Obviamente, você poderia colocar isso em sua própria função de alguma forma, mas dá uma ideia de como você pode juntar um array associativo usando seu próprio método. Espero que ajude alguém :)
fonte
Se você não está preocupado com a formatação exata, você quer algo simples, mas sem as quebras de linha,
print_r
você também pode usarjson_encode($value)
para uma saída formatada rápida e simples. ( observe que também funciona bem com outros tipos de dados )fonte
Esta é minha solução, por exemplo, para um div data-attribute:
fonte
Uma maneira é usar
print_r(array, true)
e ele retornará a representação de string da matrizfonte
key=value
associado a um separador fornecido.fonte
Uma linha única para a criação de strings de atributos HTML (com aspas) a partir de uma matriz simples:
Exemplo:
fonte
Minha solução:
fonte
E quanto a este mais curto, mais transparente, mas mais intuitivo com array_walk
fonte
Esta é a versão mais básica que consigo pensar:
fonte
key=value
com um separador escolhido!$companies->toArray()
- isso é apenas para o caso de você$variable
ser um objeto, caso contrário, basta passar $ empresas.É isso aí!
fonte