erison 63 Denunciar post Postado Julho 4, 2012 pessoal to com um problema de array. assim quero que mostre em um print_r(); apenas os array vazios. ex: $Array['123']['456']['789'][] = 'cheio'; $Array['123']['456']['789'][] = 'cheio'; $Array['123']['456']['789'][] = 'cheio'; $Array['123']['456']['789'][] = ''; print_r($Array); eu quero que mostra no print apenas os 3 primeiros array. não quero da forach dentro de outro. . tipo array_filter(); so que ele traz os campos não NULL; e eu quero os campos NULL Compartilhar este post Link para o post Compartilhar em outros sites
Guilherme Oderdenge 42 Denunciar post Postado Julho 4, 2012 Tente: <?php function EmptyValues() { return null; } $Array = array( "Brasil", "USA", "" ); print_r(array_filter( $Array, "EmptyValues" )); Compartilhar este post Link para o post Compartilhar em outros sites
Leandro Peres 2 Denunciar post Postado Julho 4, 2012 $Array['123']['456']['789'][] = 'cheio'; $Array['123']['456']['789'][] = 'cheio'; $Array['123']['456']['789'][] = 'cheio'; $Array['123']['456']['789'][] = ''; array_unique($Array); print_r($Array); Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Julho 4, 2012 Tente: <?php function EmptyValues() { return null; } $Array = array( "Brasil", "USA", "" ); print_r(array_filter( $Array, "EmptyValues" )); Error ! array_filter espera BOOLEAN, você tá jogando null, a solução seria: <?php $a = array ( ) ; $a [ 'x' ] [ 'y' ] [ 0 ] = 'algo' ; $a [ 'x' ] [ 'y' ] [ 1 ] = 'algo' ; $a [ 'x' ] [ 'y' ] [ 2 ] = 'algo' ; $a [ 'x' ] [ 'y' ] [ 3 ] = '' ; $r = array_map ( function ( $c ) { return array_map ( 'array_filter' , $c ) ; } , $a ) ; print_r ( $r ) ; Agora só você diferenciar tudo que está em $a que não está em $r Compartilhar este post Link para o post Compartilhar em outros sites
erison 63 Denunciar post Postado Julho 4, 2012 Error ! array_filter espera BOOLEAN, você tá jogando null, a solução seria: <?php $a = array ( ) ; $a [ 'x' ] [ 'y' ] [ 0 ] = 'algo' ; $a [ 'x' ] [ 'y' ] [ 1 ] = 'algo' ; $a [ 'x' ] [ 'y' ] [ 2 ] = 'algo' ; $a [ 'x' ] [ 'y' ] [ 3 ] = '' ; $r = array_map ( function ( $c ) { return array_map ( 'array_filter' , $c ) ; } , $a ) ; print_r ( $r ) ; Agora só você diferenciar tudo que está em $a que não está em $r cara isso ai deu certo no codigo mas pode me explicar o que voçê fez ai. comenta nas linhas para eu saber oq cada comando faz Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Julho 4, 2012 O array_map aplica o callback para cada elemento, já que o array é multi dimensional, eu torno a usar o map de novo até chegar nos valores para rodar o filtro lá :seta: http://br.php.net/manual/en/function.array-filter.php Resolvido então ? Compartilhar este post Link para o post Compartilhar em outros sites
Guilherme Oderdenge 42 Denunciar post Postado Julho 4, 2012 Não sabia dessa regrinha booleana pro filter. Valeu, Andrey. Compartilhar este post Link para o post Compartilhar em outros sites
erison 63 Denunciar post Postado Julho 4, 2012 O array_map aplica o callback para cada elemento, já que o array é multi dimensional, eu torno a usar o map de novo até chegar nos valores para rodar o filtro lá :seta: http://br.php.net/manual/en/function.array-filter.php Resolvido então ? mas em qual parte do codigo você fala que so pode mostra os array cheio Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Julho 4, 2012 mas em qual parte do codigo você fala que so pode mostra os array cheio ??? Você leu o que eu falei e viu o link que eu mandei ? se sabemos que o array_filter elimina tudo que é vazio, logicamente, só irá retornar os arrays que tem algum valor definido. Compartilhar este post Link para o post Compartilhar em outros sites
erison 63 Denunciar post Postado Julho 4, 2012 mas não conseguie dar um array_diff(); por quero mostra apenas as array vazia Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Julho 4, 2012 Daí você edita o código e muda a lógica <?php $a = array ( ) ; $a [ 'x' ] [ 'y' ] [ 0 ] = 'algo' ; $a [ 'x' ] [ 'y' ] [ 1 ] = 'algo' ; $a [ 'x' ] [ 'y' ] [ 2 ] = 'algo' ; $a [ 'x' ] [ 'y' ] [ 3 ] = '' ; $r = array_map ( function ( $c ) { return array_map ( function ( $x ) { return array_filter ( $x , function ( $v ) { return empty ( $v ) ; } ) ; } , $c ) ; } , $a ) ; print_r ( $r ) ; Vai voltar Array ( [x] => Array ( [y] => Array ( [3] => ) ) ) Compartilhar este post Link para o post Compartilhar em outros sites
erison 63 Denunciar post Postado Julho 4, 2012 $a = array ( ) ; $a [ 'x' ] [ 'y' ] [ 0 ] = 'algo' ; $a [ 'x' ] [ 'y' ] [ 1 ] = 'algo' ; $a [ 'x' ] [ 'y' ] [ 2 ] = 'algo' ; $a [ 'x' ] [ 'y' ] [ 3 ] = '' ; $a [ 'z' ] = '' ; $r = array_map ( function ( $c ) { return array_map ( function ( $x ) { return array_filter ( $x , function ( $v ) { return empty ( $v ) ; } ) ; } , $c ) ; } , $a ) ; me ajuda ai em outra coisa cara. eu so quero que execute esse codigo apenas $ArrayX = $a['x']; $a = array ( ) ; $a [ 'x' ] [ 'y' ] [ 0 ] = 'algo' ; $a [ 'x' ] [ 'y' ] [ 1 ] = 'algo' ; $a [ 'x' ] [ 'y' ] [ 2 ] = 'algo' ; $a [ 'x' ] [ 'y' ] [ 3 ] = '' ; $a [ 'z' ] = '' ; $ArrayX = $a [ 'x' ]; $r = array_map ( function ( $c ) { return array_map ( function ( $x ) { return array_filter ( $x , function ( $v ) { return empty ( $v ) ; } ) ; } , $c ) ; } , $ArrayX ) ; como fasso isso Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Julho 4, 2012 $r = array_map ( function ( $c ) { return array_filter ( $c , function ( $v ) { return empty ( $v ) ; } ) ; } , $ArrayX ) ; Amigo, recomendo que estude o uso dessas funções .. Compartilhar este post Link para o post Compartilhar em outros sites
erison 63 Denunciar post Postado Julho 4, 2012 $r = array_map ( function ( $c ) { return array_filter ( $c , function ( $v ) { return empty ( $v ) ; } ) ; } , $ArrayX ) ; Amigo, recomendo que estude o uso dessas funções .. e poque nesta array vai ter multimensional e normal. $a = array ( ) ; $a [ 'x' ] [ 'y1' ] ['Alert_y1'] = 'algo' ; $a [ 'x' ] [ 'y2' ] ['Alert_y2'] = 'algo' ; $a [ 'x' ] [ 'y3' ] ['Alert_y3'] = 'algo' ; $a [ 'x' ] [ 'y4' ] ['Alert_y4'] = '' ; $ArrayX = $a [ 'x' ]; $r = array_map ( function ( $c ) { return array_map ( function ( $x ) { return array_filter ( $x , function ( $v ) { return empty ( $v ) ; } ) ; } , $c ) ; } , $ArrayX ) ; ele ta retornando Array ( [y1] => Array ( ) [y2] => Array ( ) [y3] => Array ( ) [y4] => Array ( [Alert_y4] => ) ) como fasso para retornar apenas o [y4] => Array ( [Alert_y4] => ) Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Julho 4, 2012 Na boa, o código que você colocou tá errado, e vou falar de novo ... vai estudar o uso das funções - eu não vou ficar aqui postando N alternativas para resolver seu problema, eu já te dei uma base, você voltou com outro problema, te dei outra resposta ... sua solução é óbvia, mas eu não vou te dar, consiga-a você mesmo. Compartilhar este post Link para o post Compartilhar em outros sites
erison 63 Denunciar post Postado Julho 4, 2012 o forum e feito para ajudar. e você postou o codigo que resolve a metade do problema. no topico tem array vazia. eu quero que ele me traga apenas a array vazia. tenho a array. $a['x']['y1']['alert_y1'] = 'algo'; $a['x']['y2']['alert_y2'] = 'algo'; $a['x']['y3']['alert_y3'] = 'algo'; $a['x']['y4']['alert_y4'] = ''; //eu quero que ele so me retorne a utima e ja tentei isso tudo ai e não retorna a utima. ja teve topicos aqui, que eu ja pequisei em livros para poder ajudar o cara. e nem porisso me incomodei. Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Julho 4, 2012 o forum e feito para ajudar. Não nesse sentido. e você postou o codigo que resolve a metade do problema. no topico tem array vazia. eu quero que ele me traga apenas a array vazia. Não, resolve o problema apresentado inicialmente, não havia nenhum outro detalhe. ja teve topicos aqui, que eu ja pequisei em livros para poder ajudar o cara. e nem porisso me incomodei. Então, "eu" ou seja "você", mas somos diferentes, e eu não estou incomodado, é que eu não gosto de ficar postando códigos e a pessoa retornando com mais e mais situações, sem ao menos tentar ... (resolver o próprio problema). Como eu disse, eu já lhe dei a base, agora o resto é contigo. Mostre como você tentou. Compartilhar este post Link para o post Compartilhar em outros sites
Henrique Barcelos 290 Denunciar post Postado Julho 4, 2012 o forum e feito para ajudar. Fórum não é help desk, ninguém aqui recebe nada para ajudar ninguém, nem nós moderadores. Se você está ignorando o conselho que lhe foi dado, o problema é seu, não somos obrigados a tolerar esse tipo de atitude infantil. Ajudar??? sim, ajudamos no que podemos, agora não adianta querer fazer um foguete se você não sabe física básica... Compartilhar este post Link para o post Compartilhar em outros sites
erison 63 Denunciar post Postado Julho 4, 2012 Obrigado pelo tempo gasto, vó tentar resolver o resto Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Julho 4, 2012 Obrigado pelo tempo gasto Disponha, leia e releia tudo que falei, que irá encontrar a solução Compartilhar este post Link para o post Compartilhar em outros sites