erison 63 Denunciar post Postado Outubro 2, 2012 tenho ess array [WHERE] => Array ( [:id_W] => Array ( [iNT] => 40 ) ) [:qtd] => Array ( [iNT] => 55 ) [:data] => Array ( [sTR] => 2012-01-20 ) [:senha] => Array ( [sTR] => be2044d4363ef629f4c0b27368732a33 ) como fasso para tirar a array [:id_W] => Array ( [iNT] => 40 ) de dentro da where que fique assim [:id_W] => Array ( [iNT] => 40 ) [:qtd] => Array ( [iNT] => 55 ) [:data] => Array ( [sTR] => 2012-01-20 ) [:senha] => Array ( [sTR] => be2044d4363ef629f4c0b27368732a33 ) não queria usar foreach, quero saber se tem alguma função de array q fassa isso Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Outubro 2, 2012 Eu não tenho certeza se sua matriz é isso: $data = array( 'WHERE' => array( ':id_W' => array( 'INT' => 40 ), ':qtd' => array( 'INT' => 55 ), ':data' => array( 'STR' => '2012-01-20' ), ':senha' => array( 'STR' => 'be2044d4363ef629f4c0b27368732a33' ) ) ); Ou isso: $data = array( 'WHERE' => array( ':id_W' => array( 'INT' => 40 ), ), ':qtd' => array( 'INT' => 55 ), ':data' => array( 'STR' => '2012-01-20' ), ':senha' => array( 'STR' => 'be2044d4363ef629f4c0b27368732a33' ) ); Mas em ambos os casos, basta você acessar o índice diretamente ou, se quiser realmente remover tal valor de dentro da matriz, array_shift() é o que você procura: $whereID = array_shift( $data['WHERE'] ); Compartilhar este post Link para o post Compartilhar em outros sites
erison 63 Denunciar post Postado Outubro 3, 2012 minha matriz e essa $data = array( 'WHERE' => array( ':id_W' => array( 'INT' => 40 ), ), ':qtd' => array( 'INT' => 55 ), ':data' => array( 'STR' => '2012-01-20' ), ':senha' => array( 'STR' => 'be2044d4363ef629f4c0b27368732a33' ) ); e não posso usar array_shifth(); pq ele vai deletar toda array WHERE. e presciso q minha matriz fique assim $data = array( ':id_W' => array( 'INT' => 40 ), ':qtd' => array( 'INT' => 55 ), ':data' => array( 'STR' => '2012-01-20' ), ':senha' => array( 'STR' => 'be2044d4363ef629f4c0b27368732a33' ) ); presciso apenas tirar ':id_W' => array( 'INT' => 40 ), de dentro da array WHERE Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Outubro 3, 2012 e não posso usar array_shifth(); pq ele vai deletar toda array WHERE. Se você informar $data['WHERE'] como eu disse, de fato, vai remover todo array WHERE. Porém como tudo que foi removido estará armazenado na variável, não vejo como isso seria um problema. ;) Agora, se você informar apenas $data, a variável terá como valor: array ':id_W' => array 'INT' => int 40 Com isso em mãos, você pode usar array_merge() para combinar $data, agora sem o índice WHERE, com aquilo que foi extraído. Outra possibilidade seria somar os arrays. Isso mesmo, com o operador + (mais) mesmo. E a saída será aquilo que quer. Entretanto, isso é gambiarra porque o certo seria você alterar essa matriz diretamente na fonte que a originou, ao invés de contornar a lógica da estrutura. Compartilhar este post Link para o post Compartilhar em outros sites
erison 63 Denunciar post Postado Outubro 4, 2012 pois e tentei fazer assim array_merge($Campos,$Campos['WHERE']); unset($Campos['WHERE']); mas não deu certo :s Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Outubro 4, 2012 O que resultou? Eu testei em casa e funcionou perfeitamente. Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Outubro 4, 2012 pois e tentei fazer assim array_merge($Campos,$Campos['WHERE']); unset($Campos['WHERE']); mas não deu certo :s <?php $data = array( 'WHERE' => array( ':id_W' => array( 'INT' => 40 ), ), ':qtd' => array( 'INT' => 55 ), ':data' => array( 'STR' => '2012-01-20' ), ':senha' => array( 'STR' => 'be2044d4363ef629f4c0b27368732a33' ) ); $data = array_merge( array_shift( $data ), $data ); var_dump( $data ); ?> Saída: array ':id_W' => array 'INT' => int 40 ':qtd' => array 'INT' => int 55 ':data' => array 'STR' => string '2012-01-20' (length=10) ':senha' => array 'STR' => string 'be2044d4363ef629f4c0b27368732a33' (length=32) Compartilhar este post Link para o post Compartilhar em outros sites
erison 63 Denunciar post Postado Outubro 4, 2012 desse modo ate q da quase certo. o porem eo que, que nem sempre o array['WHERE'] vem no começo Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Outubro 4, 2012 Você deveria ter feito essa consideração quando postou o problema. <_< Mas continua simples de resolver. Ao invés de aplicar array_shift() você informa diretamente o índice. O único inconveniente dessa abordagem é que você será obrigado a dar unset() nesse índice, j´que não existe nativamente uma função array_pick(), que hipoteticamente faria o que array_shift() faz mas em qualquer posição. <?php $data = array( ':qtd' => array( 'INT' => 55 ), 'WHERE' => array( ':id_W' => array( 'INT' => 40 ), ), ':data' => array( 'STR' => '2012-01-20' ), ':senha' => array( 'STR' => 'be2044d4363ef629f4c0b27368732a33' ) ); $data = array_merge( $data['WHERE'], $data ); unset( $data['WHERE'] ); var_dump( $data ); Compartilhar este post Link para o post Compartilhar em outros sites
erison 63 Denunciar post Postado Outubro 9, 2012 cara olha a besteiraaaaaaaaaaaaaaa so pq no array_merge não estava colocando $data = array_merge. são essas coisas que ficamos pu.. de raiva vlw ai galera pela força. eo engraçado que em todos os outros array_merge da minha pagina de função esta certo só esse que eu fiz diferente. <_< Compartilhar este post Link para o post Compartilhar em outros sites