2011-08-11 8 views
6

मेरी सी ++ ज्ञान का आधार से, मैं करते हैं PHP में सरणियों प्रारंभ टाइप करके:
$foo = array()
या मैं जावास्क्रिप्ट से यह कस्टम ला सकते हैं, वैसे भी, किसी काम के है?
क्योंकि ऐसा करने में कोई समस्या नहीं है:
$foo[45] = 'bar' बिना को एक सरणी के रूप में प्रारंभ करना, मुझे नहीं लगता।किसी भी उपयोग के तर्क के बिना सरणी() को कॉल कर रहा है?

पुनश्च: टैग सुधार

+1

स्पष्ट रूप से सरणी प्रारंभ करना अच्छा है, और यह एक सरणी खाली करने का एक त्वरित तरीका है। –

+0

'सरणी()' पहले के साथ परिभाषित करते समय प्रदर्शन फायदे के बारे में क्या? –

+0

@ डॉटवेब: यदि सरणी बनाई गई है, तो फिर भी प्रदर्शन में कुछ (लाभहीन) कमी भी होने की उम्मीद नहीं होगी, लेकिन फिर कभी भी इसका उपयोग नहीं किया जाएगा)। – Mchl

उत्तर

6

हां यह है। (ताकि आप 'जहां $foo से आता है आश्चर्य की जरूरत नहीं है कम से कम में कोड की पठनीयता में सुधार? यह खाली है, या उसमें कुछ भी है? `

यह भी 'Variable '$a' is not set पाएगा नोटिस, या Invalid argument passed to foreach यदि आप वास्तव में सरणी तत्वों के लिए कोई मान निर्दिष्ट नहीं करते हैं।

+0

+1 जब मुझे '$ foo [45] =' bar'' 'जैसी कुछ चीज़ दिखाई देती है, तो मुझे लगता है कि "कहां' foo' प्रारंभ किया गया है और यह वास्तव में क्या है?" –

1

या तो विधि पूरी तरह से स्वीकार्य है वास्तव में अच्छा है। जैसा कि बताया गया है, array() निर्माण का उपयोग करने का यह अभ्यास आमतौर पर दूसरी भाषा से लिया जाता है जहां आप पॉपुलटिंग से पहले प्रारंभ करते हैं। PHP के साथ, आप एक खाली सरणी प्रारंभ कर सकते हैं और फिर बाद में पॉप्युलेट कर सकते हैं, या आप $variableName[0] = "x"; जैसे असाइनमेंट द्वारा एक सरणी स्थापित कर सकते हैं।

1

@petruz, यह करने का सबसे अच्छा तरीका है, न केवल यह आपको खराब PHP त्रुटि संदेशों से बचाएगा और कहता है कि फ़ंक्शन पैरामीटर को सरणी होने की अपेक्षा करता है, लेकिन IMHO, यह कोड लिखने का सबसे अच्छा तरीका है। मैं इसे

1

उपयोग करने से पहले वैरिएबल शुरू करने से पहले एक चर शुरू करता हूं। भले ही इसकी आवश्यकता नहीं है।

1

मुझे समस्याएं हैं (PHP के पुराने संस्करणों में, हाल ही में कोशिश नहीं की गई है) जहां मैं array_push या कुछ के साथ सरणी पर अभिनय कर रहा था और PHP ने मुझ पर छाल डाली। एक सामान्य नियम के रूप में यह जरूरी नहीं है, लेकिन यह सुरक्षित हो सकता है, खासकर यदि आप विरासत कोड से निपट रहे हैं, तो शायद आप $ foo को सरणी होने की उम्मीद कर रहे हैं, लेकिन यह वास्तव में एक बुलियन है? बुरी चीजें ensue।

1
आरंभीकरण के साथ

: प्रारंभ बिना

$myArray = array(); 
if ($myBoolean) { 
    $myArray['foo'] = 'bar'; 
} 
return $myArray; 

:

if ($myBoolean) { 
    $myArray['foo'] = 'bar'; 
} 
return $myArray; 

पहले मामले में यह स्पष्ट है कि तुम क्या अगर $ myBoolean गलत है ऐसा करना चाहते हैं। दूसरे मामले में यह नहीं है और php बाद में $ myArray का उपयोग करने और उपयोग करने पर चेतावनी फेंक सकता है। जाहिर है यह एक सरलीकृत मामला है, लेकिन एक जटिल मामले में "अगर" कुछ रेखाएं हो सकती हैं और/या तब तक अस्तित्व में नहीं आती जब तक कि कोई भी साथ नहीं आ जाता और इसे बाद में सरणी को महसूस किए बिना जोड़ता है।

आवश्यक नहीं होने पर, मैंने प्रारंभिक कमी की कमी देखी है, इस तरह जटिल कार्यों में गैर-स्पष्ट तर्क समस्याएं जो समय के साथ बहुत अधिक संशोधित हुई हैं।

1

यह अच्छा अभ्यास है।

array_push($foo, '45'); 

कौन सा है, जबकि एक नोटिस फेंक देगा::

$foo = array(); 
array_push($foo, '45'); 

नहीं होगा अभी या बाद में आप एक स्थिति है जहाँ आप इस तरह कुछ करने के लिए चाहते हो सकता है सामना करना पड़ेगा।

+0

ठीक है, मैं इसे कुछ array_ कार्यों और foreach के साथ आया था। लेकिन मुझे लगता है कि यदि PHP ऐसी ढीली भाषा है, तो यह एक खाली सरणी के रूप में भी शून्य पर विचार कर सकता है और तत्व को वैसे भी धक्का दे सकता है। – Petruza