Возврат различных значений из цикла foreach в php?
у меня есть цикл foreach, который повторяет каждый из типов свойств в моих результатах поиска. Код выглядит следующим образом:
<?php foreach($search_results as $filter_result){
echo $filter_result['property_type'];
} ?>
приведенный выше код возвращает:
house house house house flat flat flat
Я хотел бы сделать что-то похожее на mysql 'distinct', но не уверен, как это сделать в инструкции foreach.
Я хочу, чтобы приведенный выше код возврата:
- дома
- квартира
Не повторяйте каждый элемент каждый раз. Есть идеи??
6 ответов
попробовать с:
$property_types = array();
foreach($search_results_unique as $filter_result){
if ( in_array($filter_result['property_type'], $property_types) ) {
continue;
}
$property_types[] = $filter_result['property_type'];
echo $filter_result['property_type'];
}
http://php.net/manual/en/function.array-unique.php
пример:
$input = array("a" => "green", "red", "b" => "green", "blue", "red");
$result = array_unique($input);
print_r($result);
Array
(
[a] => green
[0] => red
[1] => blue
)
вам нужно будет немного изменить его, чтобы проверить с помощью property_type
часть массива.
Я бы использовал здесь две петли. Построить множество различных property_type
поля (вы можете использовать код в цикле, чтобы проверить, что элемент еще не существует).
затем используйте второй цикл для перехода через массив и echo
список товаров.
вам придется отслеживать уже повторившиеся значения или создавать новый уникальный массив значений всех $filter_result ['property_type']. Но это потребует от вас повторения этого массива еще раз, чтобы фактически напечатать. Так что лучше следить.
Я думал, что есть некоторые параметры функции in_array (), чтобы получить количество найденных элементов.
но не существует.
лучший способ-дублировать массив перед циклом foreach и aply этой функцией.
<?php
$filter=array();
foreach($search_results as $filter_result)
$filter[]=$filter_result['property_type'];
$filter=array_unique($filter);
print_r($filter);
?>