Get the index of the array in the foreach

0

I have the following CarrinhoDao.php class that creates an array of Carrinho.php objects that creates an object of class Produto.php

I'm doing foreach in the resulting array:

<?php
 require_once "controlls/util/Conexao.php";
 require_once "controlls/models/Produtos.php";
 require_once "controlls/models/Carrinho.php";
 require_once "controlls/daos/ProdutosDao.php";
 require_once "controlls/daos/CarrinhoDao.php";
 require_once "controlls/util/PhpUtil.php";

$connection = new Conexao();
$conexao = $connection->abreConexao();

$CarrinhoDao = new CarrinhoDao();
$produtoDao = new ProdutosDao($conexao);
$produtoDao = new CarrinhoDao($conexao);
$phpUtil = new PhpUtil();

$produto1 = new Produtos(10, 2, "TesteA", "pmg", 124, 13.40, "n", "", "n");
$produto2 = new Produtos(11, 1, "TesteB", "pmg", 12, 13, "n", "", "n");
$produto3 = new Produtos(12, 2, "TesteC", "pmg", 1, 13.04, "n", "", "n");

$produto1->setIdProdutos(1);
$produto2->setIdProdutos(2);
$produto3->setIdProdutos(2);

$CarrinhoDao->insereProduto($produto1, 1);
$CarrinhoDao->insereProduto($produto2, 2);
$CarrinhoDao->insereProduto($produto3, 3);

print "<pre>";
print_r($CarrinhoDao->getCarrinho());
print "</pre>";

foreach ($CarrinhoDao->getCarrinho() as $produto) {
    print "Key:".$produto->getKey()."<br>";
    print "Nome: ".$produto[0]->getNome()."<br>";
    print "Quantidade: ".$produto[1]."<br><br>";
}
?>

This is bringing me the following:

Array
(
    [0] => Array
        (
            [0] => Produtos Object
                (
                    [idProdutos:Produtos:private] => 1
                    [codigoProdutos:Produtos:private] => 10
                    [tipo:Produtos:private] => 2
                    [nome:Produtos:private] => TesteA
                    [tamanho:Produtos:private] => pmg
                    [estoque:Produtos:private] => 124
                    [preco:Produtos:private] => 13.4
                    [promo:Produtos:private] => n
                    [imagem:Produtos:private] => 
                    [reservado:Produtos:private] => n
                )

            [1] => 1
        )

    [1] => Array
        (
            [0] => Produtos Object
                (
                    [idProdutos:Produtos:private] => 2
                    [codigoProdutos:Produtos:private] => 11
                    [tipo:Produtos:private] => 1
                    [nome:Produtos:private] => TesteB
                    [tamanho:Produtos:private] => pmg
                    [estoque:Produtos:private] => 12
                    [preco:Produtos:private] => 13
                    [promo:Produtos:private] => n
                    [imagem:Produtos:private] => 
                    [reservado:Produtos:private] => n
                )

            [1] => 2
        )

    [2] => Array
        (
            [0] => Produtos Object
                (
                    [idProdutos:Produtos:private] => 2
                    [codigoProdutos:Produtos:private] => 12
                    [tipo:Produtos:private] => 2
                    [nome:Produtos:private] => TesteC
                    [tamanho:Produtos:private] => pmg
                    [estoque:Produtos:private] => 1
                    [preco:Produtos:private] => 13.04
                    [promo:Produtos:private] => n
                    [imagem:Produtos:private] => 
                    [reservado:Produtos:private] => n
                )

            [1] => 3
        )

)

I need to get the index of the resulting array in foreach so that, if it is the case, I can delete the product from the cart.

I made the function geKey down but I can not get the index;

<?php
class CarrinhoDao {
  private $carrinhoDao = Array();
  private $cont = 0;
  public function __construct() {

  }

  public function insereProduto($_produto, $_qtde) {

      $this->carrinhoDao[$this->cont][0] = $_produto;
      $this->carrinhoDao[$this->cont][1] = $_qtde;

      $this->cont++;
  }

  public function getCarrinho () {
      return $this->carrinhoDao;
  }

  public function getKey () {
      return key($this->carrinhoDao);
  }

  public function removeItem ($_item) {
      unset($this->carrinhoDao[$_item]);
  }

  public function alteraItem ($_item, $qde) {
      $this->carrinhoDao[$_item][1] = $qde;
  }
}
?>

Cart class:

<?php
class Carrinho {
  private $produto;

  public function __construct($_produto) {
      $this->produto = $_produto;
  }

  public function getProduto () {
      return $this->produto;
  }
}
?>

How to do this?

    
asked by anonymous 17.12.2015 / 18:50

1 answer

1

You can get the cart index in foreach with an auxiliary variable.

foreach ($CarrinhoDao->getCarrinho() as $indice => $produto){
   echo $indice .'<br>';
} 
    
17.12.2015 / 22:40