2012-01-20 12 views
7

के भीतर एक सरणी तत्व को हटाना मेरे पास एक साधारण सरणी है जिसमें सभी देशों का नाम और प्रत्येक देश से मेरी वेबसाइट पर पंजीकृत उपयोगकर्ताओं की कुल संख्या शामिल है। यह कुछ ऐसा है:फ़ोरैच लूप

Array (
    [1] => Array ([name] => Afghanistan [total] => 3) 
    [2] => Array ([name] => Albania [total] => 0) 
) 

और, मैं सरणी तत्वों (देशों) को हटाने की कोशिश कर रहा हूं जिनमें 0 उपयोगकर्ता हैं।

मैं इस कोड के साथ की कोशिश की है और यह काम नहीं कर रहा:

foreach($country as $row) { 
    if ($row['total'] == 0) { 
     unset($row); 
    } 
} 

क्या इस कोड के साथ गलत क्या है?

+2

संभावित डुप्लिकेट [आप फ़ोरैच लूप में सरणी तत्व को कैसे हटाते हैं?] (Http://stackoverflow.com/questions/1949259/how-do-you-remove-an-array-element -इन-ए-फोरच-लूप) – 7hi4g0

उत्तर

24

यदि आप unset($row) हैं तो आप केवल स्थानीय चर को हटा रहे हैं।

इसके बजाय कुंजी लाने और उस निकालें:

foreach ($country as $i => $row) { 
    if ($row['total'] == 0) { 
     unset($country[$i]); 
    } 
} 
+0

यह काम किया। आपकी सहायता के लिए धन्यवाद. –

+0

लेकिन यदि आप '$ पंक्ति' (संदर्भ द्वारा पास) से पहले' & 'चिह्न जोड़ते हैं तो क्या होगा? – Houssni

3

Foreach सरणी पर कुंजियों/मूल्यों की प्रतियां तुम पर पाशन कर रहे हैं, इसलिए सभी आप कर रहे हैं स्थानीय प्रतिलिपि unsetting है, नहीं बनाता है मूल वास्तव में सरणी में है। या तो सरणी सीधे

foreach($country as $key => $row) { 
    if ($row['total'] == 0) { 
    unset($country[$key]); 
    } 
} 

का उपयोग या एक संदर्भ का उपयोग करें, सेट किए बिना यह और बाद में फिल्टर शून्य तत्व:

foreach($country as &$row) { 
    if ($row['total'] == 0) { 
     $row = (unset) $row; 
    } 
} 
unset($row); 
$country = array_filter($country); 
+2

संदर्भ बीटीडब्ल्यू काम नहीं करेगा। यह अभी भी एक स्थानीय चर होगा। ;) – NikiC

+0

इसके अतिरिक्त संदर्भ को हटाने के लिए 'foreach' लूप के बाद 'unset ($ val)' डालने का अच्छा अभ्यास है (यह उत्तर के अंतिम पैराग्राफ को भी छोड़ देगा)। – hakre

0

क्योंकि $ पंक्ति मूल्य, नहीं पूरे तत्व है।

प्रयास करें: foreach ($ के रूप में $ देश कुंजी => $ मूल्य) { अगर ($ पंक्ति [ 'कुल'] == 0) { सेट नहीं ($ देश [$ कुंजी]); } }

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