Ir para conteúdo

Arquivado

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

JeanGomesP

comparaçao entre arrays dentro de foreach

Recommended Posts

Boa tarde.

Tenho uma tabela de produtos, estou fazendo um foreach para exibi-los, e tenho os produtos orçados pelo cliente, a tela em questão é onde ele pode editar o orçamento, tenho que carregar os produtos marcados por ele e a quantidade, mas não estou compreendendo como posso fazer a comparação para checar os produtos.

 

        foreach ($this->produtos as $prod) :
            if ($i == 0 || $i % 2 == 0) :
                echo '<div class="form-group">';
            endif;
            $checked="";
            foreach ($this->orcamento['items'] as $item) :
                //$checked = $prod['id_produto'] === $item['id_produto'] ? "checked" : "";
                if (in_array($item, $prod)) {
                    $checked = "checked";
                }
            endforeach;
            ?>
            <div class="col-sm-3">
                <div class="checkbox">
                    <label>
                        <input <?php echo $checked; ?> value="<?php echo $prod['id_produto']; ?>" name="prod_<?php echo $prod['id_produto']; ?>" id="ckprod-<?php echo $prod['id_produto']; ?>" type="checkbox"><?php echo $prod['nome']; ?>
                    </label>
                </div>
            </div>
            <div class="col-sm-2">
                <input value="<?php //echo $item['qtd'];      ?>" type="text" name="qtd_<?php echo $prod['id_produto']; ?>" id="qtd_<?php echo $prod['id_produto']; ?>" placeholder="Quantidade" class="form-control">
            </div>
            <?php
            if ($i % 2 != 0 || $i == count($this->produtos) - 1) :
                echo '</div>';
            endif;
            $i++;
        endforeach;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Jean!

 

Há uma forma bem mais fácil:

 

primeiro, use a função count() para determinar o numero de elementos que um array / matriz tenha;

segundo, faça um loop for usando como referência o numero de elementos de um array dados pela função count()

 

vou mostrar um exemplo disso:

 

$numItens = count($array);

for($i=0;$i<$numItens;$i++){
  echo $array['coluna'][$i];
}

o grande truque tá em, como visto dentro do for, é referenciar a coluna['coluna'] e também colocar o numero(chave) [$i].

 

serve tanto para array, tanto para mattrizes

 

qualquer coisa de um grito

 

espero ter ajudado :D



ah sim, como eh o tpo de comparação que vc quer fazer?!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Jean pelo que entendi, não precisa de frech ou qualquer coisa que rode array, apenas uma função in "array()";

 

creio eu que os itens do pedido estão em BD certo?! se for assim é só no loop do BD usar esta função, ex:

 

$selecao = "select * from pedido where cod_ped = ".$id;
$exec = mysql_query($selecao);

for($i=0;$i<mysql_num_rows($exec);$i++){
  $linha = mysql_fetch_array($exec);
  //agora vem a parte de comparação
  if(in_array($linha['cod_prod'], $array)){
    $status = "checkado";
  }else{
    $status = "nao_checado";
  }
}

Bem, a lógica eh essa.

 

Espero ter ajudado

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.