在PHP中从foreach循环返回不同的值?
我有一个foreach循环,回应我的搜索结果中的每个属性类型。代码如下:在PHP中从foreach循环返回不同的值?
<?php foreach($search_results as $filter_result){
echo $filter_result['property_type'];
} ?>
上面的代码返回:
house house house house flat flat flat
我愿做类似于MySQL的“独特”的东西,但我不知道如何做到这一点的foreach语句。
我想上面的代码返回:
- 房子
- 平
每次不重复每一个项目。有任何想法吗??
尝试用:
$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'];
}
我在这里使用两个循环。一个用于构建不同property_type
字段的数组(您可以使用循环中的代码来检查项目不存在)。
然后,使用第二个循环来遍历数组和echo
项目列表。
<?php
$filter=array();
foreach($search_results as $filter_result)
$filter[]=$filter_result['property_type'];
$filter=array_unique($filter);
print_r($filter);
?>
'echo $ filter;'不能打印数组。 – hsz 2012-02-21 12:00:58
我不太喜欢这个,除了在获取数据时应该区分的事实之外,你只是盲目地将它添加到一个数组中,只是为了使用array_unique。这在我看来增加了另一个症状修复。 – 2012-02-21 12:01:32
@hsz谢谢,修正 – 2012-02-21 12:01:57
你必须跟踪已经回荡值或建立所有$ filter_result [“房产类型”]的值的新的独特的阵列。但是那样会要求您再次遍历该数组以实际打印。所以保持跟踪会更好。
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
检查。
第二循环是不必要的,因为如果在数组中找到/未找到,则可以打印或废弃当前记录 – giorgio 2012-02-21 12:02:33
True - 尽管如果要保留阵列供以后使用,而不仅仅是打印为屏幕,你走。 – Widor 2012-02-21 12:05:58
也是如此:)选择任何需要的,尽管单循环会稍微快一点 – giorgio 2012-02-21 12:10:31