04.10.2022 13:17
1
Zdravím, dokázal by někdo poradit, jak bych mohl vytáhnout data z foreach loopu?
Jedná se o zobrazování ceny jednotlivých produktu v nákupním košíku. Můj aktuální kod funguje, ale zobrazuje se vždy jen cena prvního produktu... u dalšího produktu se též zobrazuje cena z prvního produktu...
Nevím tedy jak mám vytáhnout informace z foreach, aby se zobrazovali ceny správně ke každému produktu.

Zde je kod:
PHP kód:
$kosik_obsah json_decode($cookie_obsahtrue,  JSON_UNESCAPED_UNICODE);
 
foreach(
$kosik_obsah as $vyber => $polozka){

 
$polozka_cena $kosik_obsah[$vyber]["polozka_ks"] * $polozka["polozka_cena"];  
 $pocet_ks
[] = $polozka_cena//toto je cena jednotlivého produktu

 


$data = array(
        'cena_polozka'  => reset($pocet_ks)
 
// zkoušel jsem taky jiné metody jako current($pocet_ks) 
); 

echo 
json_encode($data); //potřebují to mít v json kvuli ajax funkci. 
05.10.2022 07:03
2
Postačí se například zeptat strýčka Googla:
https://stackoverflow.com/questions/32794570/access-variable-outside-foreach-loop-php

Běžně v programovacích jazycích, kdyz definujete nějakou proměnnou uvnitř for loopu, tak je platná pouze pro tu danou iteraci. Tudíž je nutné nejdříve definovat danou proměnnou před loopem a pak až do takto předem definované proměnné zapisovat uvnitř loopu data.
06.10.2022 14:35
3
Ve foreach si vytvoříte pole cen $pocet_ks a funkcí reset() pak vždy vyberete první položku.

Tzn. podle potřeby buď vracet rovnou celé pole $pocet_ks nebo rozšířit původní data například takto:
Kód:
foreach($kosik_obsah as $vyber => $polozka){
   $kosik_obsah[$vyber]["cena_polozka"] = $polozka["polozka_ks"] * $polozka["polozka_cena"];  
} 

echo json_encode($kosik_obsah);