JF
Executando um array que vem dentro de uma string
Tenho uma consulta no banco de dados retorna um array multidimensional (pelo menos a sintaxe) que seriam colunas de uma tabela, algo assim:
e gostaria que o PHP transformasse (executasse) essa string em um array.
Algumas alternativas que usei e não funcionaram (a titulo de exemplo):
Alguém se habilita? Pablo?
"array(array('titulo' => 'Peso', 'valor' => 100, 'referencia' => '[a1.1.1]'),
array('titulo' => 'Nota', 'valor' => 94.1, 'referencia' => '[a2.1.1]'),
array('titulo' => 'percentual', 'valor' => 0.0, 'referencia' => '[a3.1.1]'))";
e gostaria que o PHP transformasse (executasse) essa string em um array.
Algumas alternativas que usei e não funcionaram (a titulo de exemplo):
- <?php
- // vindo do DB
- $executa = "array(array('titulo' => 'Peso', 'valor' => 100, 'referencia' => '[a1.1.1]'),
- array('titulo' => 'Nota', 'valor' => 94.1, 'referencia' => '[a2.1.1]'),
- array('titulo' => 'percentual', 'valor' => 0.0, 'referencia' => '[a3.1.1]'))";
- $resposta = $executa; // Não funciona, não converte em array
- $respostas = (array) $array; // Não funciona, não converte em array
- $respostas = (object) $array; // Não funciona, não converte em objeto
- ?>
Alguém se habilita? Pablo?
Falha nossa...
Boa tarde.
Talvez facilite se vc informar como chegou a essa string.
Pode ser que consiga, sem garantias, https://www.php.net/manual/pt_BR/function.unserialize.php.
Espero ter ajudado.
Não sei se entendi direito, mas se fizer isso:
vai ter um array.
Exato Leoardo, o problema é que é uma matriz multidimensional, então minha ideia era de formatar a consulta para que já viesse prontinha, mas não consegui executá-la no PHP. Minha segunda opção seria utilizar a função preg_split() que, segundo o manual (https://www.php.net/manual/pt_BR/function.preg-split.php), resolveria o problema, mas não consegui entender o primeiro parâmetro da função (expressões regulares). Enfim, resolvi com a função MultiExplode, que é recursiva e dá um explode dentro de outro, formando arrays multidimensionais, como eu precisava. Segue um exemplo:
P.S.: Coloquei-a em uma classe que mantenho em app/lib/widget chamada Uteis.