Dica para filtrar Arrays Multi-dimensionais

Pessoal,

Independente do seu nível como programador, vou publicar um pequeno código que foi muito útil pra mim ontem. Este foi desenvolvido por um grande amigo, Felipe Pena.

O objetivo é pegar todos os valores de um array multi-dimensional sem repetí-los.

No PHP temos a função array_unique(), porém esta só funciona em single arrays..

Exemplo Single array: $minha_array[0] = 10;
Exemplo Multi-dimentional array: $minha_array[0][0] = 10;

Ou seja, todo o dataset do sc_lookup é um array multi-dimensional.

Exemplo prático de como usar a função que estou falando:


  1. sc_lookup(dataset,"select id_cotacao, id_forn1, id_forn2, id_forn3 from cotacoes where id_cotacao = {id_cotacao}");
  2. $a = {dataset};
  3. $tmp = array();
  4. for ($i = 0; $i < count($a); $i++) {
  5. $a[$i] = array_unique($a[$i]);


  6. if ($i > 0) {
  7. $tmp2 = array();
  8. foreach ($a[$i] as $k => $v) {
  9. if (!in_array($v, $tmp, true)) {
  10. $tmp2[$k] = $v;
  11. }
  12. }
  13. $a[$i] = $tmp2;
  14. }
  15. $tmp = array_merge($a[$i], $tmp);
  16. }
  17. unset($tmp, $tmp2);
  18. print_r($a);

Tudo isso acima faz a mesma função do array_unique (http://br2.php.net/manual/pt_BR/function.array-unique.php) só que não apenas para Single Array, mas sim para qualquer tipo.

Espero que você possa usar em algum momento.

[]'s

GuilhermeonQuinta 02 Outubro 2008 - 13:47:05
Comentário(s):0 | TrackBacks:0

Endereço trackback para esta mensagem: http://www.scriptcaseajax.com.br/e107_plugins/trackback/trackback.php?pid=18
Clique aqui para registrar-se
Não há trackbacks para esta notícia.