Sergomen
@Sergomen
Просто делай добро и оно вернётся

Почему элементы добавляются в массив игнорируя условие?

Нужно сделать чтото типо корзины в магазине. В функцию передается массив с названием товаров и ценами, функция должна подсчитать количество одинаковых товаров и также общие цены одинаковых товаров и вывести все это на экран.

По задумке должно быть так:
в foreach каждый элемент массива $arr обрабатывает for и в зависимости от условий делать соответствующие действия(если имена товаров совпадают($item[0] == $temp[$i][0]) то увеличивать цену и количество товаров, иначе добавить товар(также его цену и количество) в новый массив($temp) )

Но почему-то элементы добавляются тогда когда условие верно(или, кажется, я сам не понял в чем проблема).

Вот код:
function trash($arr){
    $temp = [[]];
    foreach ($arr as $item){
        print_r($item);
        echo "<br>";
        for ($i = 0; $i < count($temp); $i++){
             print_r($temp[$i]);
            if ($item[0] == $temp[$i][0]){
                $temp[$i][1] += $item[1];
                $temp[$i][2] += 1;
            }
            else{
                array_push($temp, [$item[0],$item[1],1]);
            }
        }
        echo "<hr><br>";
    }

    array_splice($temp,0,1);
    foreach ($temp as $item){
        echo "<div style='display: inline-block;border: solid 1px black; padding: 5px;'>
            <h1>{$item[0]}</h1>
            <span> Count: {$item[2]}</span><span> Price: {$item[1]} </span>
        </div>";
        
    }
}
trash([["iphone 0",6000],["macbook",300000],["iphone 0",50000],["iphone 0",50000],["iphone 0",50000]]);
  • Вопрос задан
  • 67 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
$result = [];
foreach ($arr as [$name, $price]) {
    $result[$name] = [
        'name' => $name,
        'totalPrice' => ($result[$name]['totalPrice'] ?? 0) + $price,
        'count' => ($result[$name]['count'] ?? 0) + 1
    ];
}
$result = array_values($result);
/*
array(2) {
  [0] => array(3) {
    ["name"] => string(8) "iphone 0"
    ["totalPrice"] => int(156000)
    ["count"] => int(4)
  }
  [1] => array(3) {
    ["name"] => string(7) "macbook"
    ["totalPrice"] => int(300000)
    ["count"] => int(1)
  }
}
*/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
03 мая 2024, в 00:45
1000 руб./за проект
02 мая 2024, в 23:56
2000 руб./за проект
02 мая 2024, в 23:29
1500 руб./в час