0
I have the following class CarrinhoDao.php
creating an array of objects from Carrinho.php
that creates a class object Produto.php
I’m making a 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 take the index of the resulting array in the foreach so that, if applicable, I can delete the product from the cart.
I did the job geKey
below but I’m not getting 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;
}
}
?>
Trolley class:
<?php
class Carrinho {
private $produto;
public function __construct($_produto) {
$this->produto = $_produto;
}
public function getProduto () {
return $this->produto;
}
}
?>
How to do this?
The product must be removed by your
id
and not by position in the array. This product array is a little strange ... inside a numeric index has another two one is the product and the other I have no idea what it is.– rray
Yes, the logic is this. Each index of the final array will have 2 sub-indices. 0 with Product object and index 1 with quantity
– Carlos Rocha
See if you can get the right key with
$k
,

foreach ($trolley->getCarrinho() as $k => $product) { echo $k;}`– rray
that’s right. Thank you!
– Carlos Rocha