2012-02-21 11 views
5

मेरे पास एक फ़ोरैच लूप है जो मेरे खोज परिणामों में प्रत्येक संपत्ति प्रकार को echos करता है।php में foreach loop से अलग मान लौट रहे हैं?

<?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']; 
} 

उत्तर

15

की कोशिश करो। एक अलग property_type फ़ील्ड की सरणी बनाने के लिए (आप लूप में कोड का उपयोग कर सकते हैं यह जांचने के लिए कि आइटम पहले से मौजूद नहीं है)।

फिर, सरणी के माध्यम से चरणबद्ध करने के लिए दूसरे लूप का उपयोग करें और echo आइटम की सूची।

0

मैं दो छोरों यहाँ का उपयोग करेंगे: साथ

+0

दूसरा लूप अनावश्यक है क्योंकि आप सरणी – giorgio

+0

में पाए गए/नहीं पाए गए वर्तमान रिकॉर्ड को प्रिंट या अप्रचलित कर सकते हैं - हालांकि यह आसान होगा अगर आप स्क्रीन पर प्रिंट करने के बजाय बाद में उपयोग के लिए सरणी को संरक्षित करना चाहते हैं तुम जाओ। – Widor

+0

भी सच है :) जो भी आवश्यक है चुनें, हालांकि एक-लूप थोड़ा तेज़ होगा – giorgio

-1
<?php 

$filter=array(); 
foreach($search_results as $filter_result) 
    $filter[]=$filter_result['property_type']; 
$filter=array_unique($filter); 

print_r($filter); 
?> 
+0

'echo $ फ़िल्टर; 'एक सरणी मुद्रित नहीं कर सकता। – hsz

+0

मुझे यह तथ्य वास्तव में पसंद नहीं है, इस तथ्य के अलावा कि डेटा लाने के दौरान भेदभाव किया जाना चाहिए, आप इसे सरणी में केवल array_unique का उपयोग करने के लिए एक सरणी में जोड़ते हैं। मेरी राय में एक और लक्षण जोड़ना है। –

+0

@hsz धन्यवाद, तय –

0

आप पहले से ही प्रतिध्वनित मूल्यों का ट्रैक रखने के लिए या सभी $ filter_result [ 'property_type'] के मूल्यों का एक नया अनूठा सरणी का निर्माण करना होगा। लेकिन इसके बाद आपको वास्तव में प्रिंट करने के लिए एक बार फिर उस सरणी पर फिर से शुरू करने की आवश्यकता होगी। तो ट्रैक रखना बेहतर होगा।

0

मैं सोच रहा था कि आइटमों की गिनती प्राप्त करने के लिए in_array() फ़ंक्शन के लिए कुछ param था।

लेकिन मौजूद नहीं है।

तो कोशिश बेहतर तरीका array_unique()

साथ foreach पाश से पहले सरणी नकल करते हैं और इस समारोह aply है।

4

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 भाग का उपयोग कर जांच करने के लिए थोड़ा परिवर्तन करने के लिए की आवश्यकता होगी।

संबंधित मुद्दे