Ir para conteúdo
Fórum Script Brasil
  • 0

Array de arrays


Carlos Rocha

Pergunta

Ola pessoal.

Tenho seguinte array

Array
(
    [0] => Array
        (
            [id_prod] => 1
            [quan] => 1
            [id_lista] => 13
        )

    [1] => Array
        (
            [id_prod] => 2
            [quan] => 2
            [id_lista] => 11
        )

    [2] => Array
        (
            [id_prod] => 4
            [quan] => 3
            [id_lista] => 9
        )

    [3] => Array
        (
            [id_prod] => 3
            [quan] => 4
            [id_lista] => 2
        )

)
Como posso filtrar para saber qual array veio com [quan] maior que 0(zero)? A ideia aqui é fazer filtro de carrinho de compras onde o cliente pode lançar todos os produtos de uma só vez e em um só botão. Porem, só me interessa, aquele produto que sua quanrtidade for maior que 0. É para adptar a esse código;
for( $i = 0; $i < count( $_POST ); $i++ )
                      {
                              if( !empty( $_POST[ $i ] [ 'id_prod' ] ) )
                              {
                                $Query = sprintf( 'SELECT id FROM produtos WHERE id = %d', $_POST[ $i ] [ 'id_prod' ] );
                                $R_Query = $MySQL->query( $Query );
                                if( mysql_num_rows( $R_Query ) > 0 )
                                {
                                  $MeuCarrinho->AdicionarItem( $_POST[ $i ] [ 'id_prod' ], $_POST[ $i ] [ 'quan' ] , $_POST[ $i ] [ 'id_lista' ] );
                                }
                               }
            
                        }

Como posso fazer isso?

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Observei que, se eu fizer assim:

$dados=    filtrar_array_por_valor($_POST, 'quan', 1);
print_r($dados);
Chamando a funçao
<?
function filtrar_array_por_valor($array, $index, $value) {
   if(is_array($array) && count($array) > 0) {
     foreach(array_keys($array) as $key) {
       $temp[$key] = $array[$key][$index];

      if ($temp[$key] >= $value) {
         $newarray[$key] = $array[$key];
       }
     }
   }
   return $newarray;
 }
?>
Terei o que eu preciso e adaptando o código à variavel $dados. O que antes colocava no carrinho todos os ítens inclkusive os com 0 unidades, agora, embrora a matriz esteja retonando mais de um ítem, ele só esta colocando 1. Porque será? Veja a adptaçao Antes
for( $i = 0; $i < count( $_POST ); $i++ )
                      {
                              if( !empty( $_POST[ $i ] [ 'id_prod' ] ) )
                              {
                                $Query = sprintf( 'SELECT id FROM produtos WHERE id = %d', $_POST[ $i ] [ 'id_prod' ] );
                                $R_Query = $MySQL->query( $Query );
                                if( mysql_num_rows( $R_Query ) > 0 )
                                {
                                  $MeuCarrinho->AdicionarItem( $_POST[ $i ] [ 'id_prod' ], $_POST[ $i ] [ 'quan' ] , $_POST[ $i ] [ 'id_lista' ] );
                                }
                               }
            
                        }
Depois
for( $i = 0; $i < count( $dados ); $i++ )
                      {
                              if( !empty( $dados[ $i ] [ 'id_prod' ] ) )
                              {
                                $Query = sprintf( 'SELECT id FROM produtos WHERE id = %d', $dados[ $i ] [ 'id_prod' ] );
                                $R_Query = $MySQL->query( $Query );
                                if( mysql_num_rows( $R_Query ) > 0 )
                                {
                                  $MeuCarrinho->AdicionarItem( $dados[ $i ] [ 'id_prod' ], $dados[ $i ] [ 'quan' ] , $dados[ $i ] [ 'id_lista' ] );
                                }
                               }
            
                        }

Link para o comentário
Compartilhar em outros sites

  • 0

já achei.

Era só trocar o menor

for( $i = 0; $i < count( $dados ); $i++ )
por menor/igual
for( $i = 0; $i <= count( $dados ); $i++ )
Ficando assim:
for( $i = 0; $i <= count( $dados ); $i++ )
                {
                        if( !empty( $dados[ $i ] [ 'id_prod' ] ) )
                        {
                          $Query = sprintf( 'SELECT id FROM produtos WHERE id = %d', $dados[ $i ] [ 'id_prod' ] );
                          $R_Query = $MySQL->query( $Query );
                          if( mysql_num_rows( $R_Query ) > 0 )
                          {
                            $MeuCarrinho->AdicionarItem( $dados[ $i ] [ 'id_prod' ], $dados[ $i ] [ 'quan' ] , $dados[ $i ] [ 'id_lista' ] );
                          }
                         }
      
                  }

Valeu

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...