PHP - duda en lo que respecta la logica de este algoritmo

 
Vista:

duda en lo que respecta la logica de este algoritmo

Publicado por rodrigo (4 intervenciones) el 03/05/2020 21:49:43
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public function add(){
    if(isset($_GET['id'])){
        $producto_id = $_GET['id'];
    }else{
        header('Location:'.base_url);
    }
 
    if(isset($_SESSION['carrito'])){
        $counter = 0;
        foreach($_SESSION['carrito'] as $indice => $elemento){
            if($elemento['id_producto'] == $producto_id){
                $_SESSION['carrito'][$indice]['unidades']++;
                $counter++;
            }
        }
    }
 
    if(!isset($counter) || $counter == 0){
        // Conseguir producto
        $producto = new Producto();
        $producto->setId($producto_id);
        $producto = $producto->getOne();
 
        // Añadir al carrito
        if(is_object($producto)){
            $_SESSION['carrito'][] = array(
                "id_producto" => $producto->id,
                "precio" => $producto->precio,
                "unidades" => 1,
                "producto" => $producto
            );
        }
    }

hola gente tengo soy nuevo en la programacion y tengo una duda en lo que respecta la logica de este algoritmo. en especial en esta parte:

1
2
3
4
5
6
if(isset($_SESSION['carrito'])){
    $counter = 0;
    foreach($_SESSION['carrito'] as $indice => $elemento){
        if($elemento['id_producto'] == $producto_id){
            $_SESSION['carrito'][$indice]['unidades']++;
            $counter++;}}

porque en el if no puedo poner $indice[id_producto'] == $producto_id y tambien por que no puedo poner en vez de $_SESSION['carrito'][$indice]['unidades']++; poner $elemento ["unidades"]++.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Julio
Val: 2.994
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

duda en lo que respecta la logica de este algoritmo

Publicado por Julio (830 intervenciones) el 04/05/2020 00:17:05
Hola.

Poder puedes, pero no hará lo que deseas. Bueno, en el primer caso no puedes. Cuando haces en el foreach $indice => $elemento, esa variable $indice tiene precisamente el índice del array, que es un string. Por tanto, como es un string, no puedes hacer $indice["id_producto"] porque eso sería acceder al elemento id_producto de un array y, como te digo, $indice es una simple cadena y no un array.

En el segundo caso sí puedes, pero se incrementaría el valor de $elemento["unidades"] y, en este caso, no te interesa. ¿Por qué? Porque esa variable se va a perder cuando termine el foreach (bueno, y en cada iteración será un elemento distinto) y a ti te interesa que el número de unidades se guarde en el array de la sesión, que es el que está incrementando si te fijas.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar