2016-05-18 2 views
0

Я пытаюсь манипулировать некоторыми данными в opencart, но у меня проблемы. Как я могу проверить этот массив для каждого ключа $ product ['price'], чтобы получить наименьшее существующее число и true/false boolean, если все числа одинаковы. Я пытаюсь сделать это с помощью цикла foreach, но не могу понять, что делать. Вот приблизительное представление о том, чего я хочу.Опорный массив продуктов

foreach ($this->cart->getProducts() as $product) { 

if($product['price'] == false){ //not the same 
Smallest number of $product['price'] 
}else{ 
do something else 
} 

} 

ответ

0

Существует несколько решений для этой проблемы в зависимости от того, что вам нужно в качестве выхода. Вот два из них:

Решение 1

Получить самую низкую цену (число):

$prices = array(); 
foreach ($this->cart->getProducts() as $product) { 
    array_push($prices, $product['price']); 
} 
return min($prices); // return or do w/e with the lowest price 

Проверьте, если все значения одинаковы (True, если все то же самое, False если нет):

return count(array_unique($prices) == 1); 

Что мы делаем здесь, подсчет количества уникальных записей (array_unique удаляет все дубликаты) и проверьте, равно ли оно 1 (= все одинаковы).

Решение 2

Получить продукт (объект) с самой низкой ценой:

$prices = array(); // necessary for the "all equals check" 
foreach($this->cart->getProducts() as $product) { 
    if(!isset($cheapestProduct) || $cheapestProduct['price'] > $product['price']) { 
    $cheapestProduct = $product; 
    } 
    array_push($prices, $product['price']); // necessary for the "all equals check" 
} 
return $cheapestProduct; 

Проверьте, если все значения одинаковы (если вы не будете нуждаться в этом, вы можете удалите две прокомментированные строки выше):

return count(array_unique($prices) == 1); 
Смежные вопросы