Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

erison

[Resolvido] extrair array

Recommended Posts

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

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

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

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

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

O que resultou? Eu testei em casa e funcionou perfeitamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.