2009-03-24 11 views
337

अगर मैं इस तरह के रूप (मैं अपने आकार को परिभाषित नहीं है) PHP में एक सरणी को परिभाषित:PHP में रिक्त सरणी में तत्व कैसे जोड़ें?

$cart = array(); 

मैं बस निम्नलिखित का उपयोग करके उसमें तत्वों को जोड़ने है?

$cart[] = 13; 
$cart[] = "foo"; 
$cart[] = obj; 

नहीं PHP में सरणियों उदाहरण, cart.add(13) के लिए, एक ऐड विधि है?

उत्तर

567

दोनों array_push और विधि आप वर्णित काम करेंगे।

<?php 
$cart = array(); 
$cart[] = 13; 
$cart[] = 14; 
// etc 
?> 

एक ही है के रूप में:

<?php 
$cart = array(); 
array_push($cart, 13); 
array_push($cart, 14); 

// Or 
$cart = array(); 
array_push($cart, 13, 14); 
?> 
+137

के रूप में, पीएचपी दस्तावेज में कहा गया है कि यदि आप केवल कर रहे हैं एक बार प्रत्येक तत्व (जैसे लूप में) या एक तत्व को एक बार दबाकर, '$ कार्ट [] = 13' विधि का उपयोग करना सबसे अच्छा नहीं है क्योंकि यह एक ही ऑपरेशन करने के लिए कम वर्ण है, लेकिन यह भी नहीं करता है फ़ंक्शन कॉल के प्रदर्शन ओवरहेड को लागू करें, जो array_push() होगा। संपादित करें: लेकिन, महान जवाब। प्रभावी रूप से वही, और अधिकांश उपयोगों में प्रदर्शन अंतर भी नहीं दिखेगा, लेकिन उन बारीकियों को जानने में मदद करता है। – Mattygabe

+38

क्या यह सिर्फ मुझे है या '$ कार्ट [] = ...' वाक्यविन्यास, पहली नज़र में, एक परिवर्तनीय असाइनमेंट की तरह दिखता है और एक अंतर्निहित array_push नहीं है? –

+3

यह निश्चित रूप से मेरे लिए करता है। मुझे इस बात का कोई फर्क नहीं पड़ता कि क्यों ** ** ** असाइनमेंट नहीं है। – BrassApparatus

6

आप array_push उपयोग कर सकते हैं। यह तत्वों को सरणी के अंत में जोड़ता है, जैसे स्टैक में।

आप भी इस तरह यह किया जा सकता है:

$cart = array(13, "foo", $obj); 
52

यह बेहतर है array_push का उपयोग नहीं करने के लिए और सिर्फ तुम क्या सुझाव का उपयोग करें। कार्य सिर्फ ओवरहेड जोड़ते हैं।

//We don't need to define the array, but in many cases it's the best solution. 
$cart = array(); 

//Automatic new integer key higher than the highest 
//existing integer key in the array, starts at 0. 
$cart[] = 13; 
$cart[] = 'text'; 

//Numeric key 
$cart[4] = $object; 

//Text key (assoc) 
$cart['key'] = 'test'; 
+5

"यदि आप लूप में किसी सरणी में एकाधिक मान जोड़ रहे हैं, तो यह बार-बार [] = कथन" http://www.php.net/manual/en/function.array-push.php# की तुलना में array_push का उपयोग करना तेज़ है। 84959 –

+1

बिल्कुल सही अगर आपका उपयोग-केस एक ही आइटम या आइटम को एक समय में जोड़ रहा है। यदि सभी मान एक ही समय में ज्ञात हैं, तो यह संभव है कि सरणी_पश नोटेशन का उपयोग करने के लिए शायद सबसे अच्छा है, इस पर निर्भर करता है कि कितनी वस्तुओं को सरणी नाम को फिर से टाइप करने से अतिरिक्त वर्ण जोड़े जाना चाहिए, प्रत्येक बार फंक्शन कॉल की तुलना में प्रदर्शन बाधा के अधिक हो सकता है ओवर-सिर। हमेशा के रूप में, चयन करते समय निर्णय का प्रयोग किया जाना चाहिए। अच्छा जवाब! – Mattygabe

-1

एक शून्य-आधारित तत्व अनुक्रमण के साथ जोड़े जाने के लिए तत्वों चाहती है, तो मुझे लगता है कि यह रूप में अच्छी तरह से काम करेगा:

// adding elements to an array with zero-based index 
$matrix= array(); 
$matrix[count($matrix)]= 'element 1'; 
$matrix[count($matrix)]= 'element 2'; 
... 
$matrix[count($matrix)]= 'element N'; 
2

याद रखें, इस विधि पहली सरणी अधिलेखित कर देता है, इसलिए का उपयोग केवल जब आप कर रहे हैं ज़रूर!

$arr1 = $arr1 + $arr2; 

(see source)

+1

डाउनवोट क्यों, कोई बता सकता है कि यह क्यों बुरा है? क्या यह असुरक्षित है? – Sandy

+1

@SandyBeach यह एक उत्तर नहीं है – Albert

7

मेरे अनुभव के आधार पर, आप समाधान ठीक है (सर्वोत्तम) जब कुंजी महत्वपूर्ण नहीं हैं:

$cart = array(); 
$cart[] = 13; 
$cart[] = "foo"; 
$cart[] = obj; 
संबंधित मुद्दे