सरणी () और [] के बीच PHP अंतर


148

मैं एक PHP ऐप लिख रहा हूं और मैं यह सुनिश्चित करना चाहता हूं कि यह बिना किसी त्रुटि के काम करेगा।

मूल कोड:

<?php
$data = array('name' => 'test',
              'id'   => 'theID');

echo form_input($data);
?>

क्या कोई त्रुटि के साथ निम्न कार्य या किसी कारण से अनुशंसित नहीं है?

<?= form_input(['name' => 'test', 'id' => 'theID']); ?>

क्या कोई अंतर है?

मैंने PHP.net में array()वर्ग कोष्ठक के साथ डेटा के बारे में और लघु सरणी विधि को फिर से देखा है, []लेकिन मुझे यकीन नहीं है।

और यह भी, क्या <?= ?>गूंज के लिए छोटा php टैग ठीक है? क्या कोई संस्करण समस्या है? (प्रदान php.ini में सक्षम है)


1
PHP 5.4 में लघु सरणी सिंटैक्स पेश किया गया था, कोई अंतर नहीं है और पुरानी पद्धति को हटाया नहीं जाएगा, इसलिए यह या तो उपयोग करना सुरक्षित है। छोटे टैग आमतौर पर पर आधारित होते हैं, मैं उनका उपयोग नहीं करता।
जिमल जूल

2
Tks, किसी भी संदर्भ / php लघु टैग का उपयोग नहीं करने पर कारण?
Mr.Web

7
यद्यपि <? =?> को वास्तव में शॉर्टटैग नहीं माना जाता है, वे मानक शॉर्टटैग afaik के साथ अक्षम नहीं हैं, इसलिए उन्हें सरल गूँज के लिए ठीक होना चाहिए।
अलेक्जेंडर वरविज्क


1
दिलचस्प </?> टैग पर पढ़ा गया। टिप्पणियों के अनुसार "
रासमस लेरडॉर्फ

जवाबों:


223

निम्नलिखित []PHP> = 5.4 में समर्थित है:

['name' => 'test', 'id' => 'theID']

यह केवल एक छोटी वाक्य रचना है और PHP <5.4 में यह काम नहीं करेगा


ऐसा लगता है कि 5.3.24 इस वाक्य रचना का भी समर्थन करता है। (सीधे पुष्टि नहीं कर सकता)
अल्बर्टो

3
क्या आपको कोई फर्क है?
अली अकबर अज़ीज़ी

26
@CooPer, नहीं, जब तक आप टाइपिंग की लंबाई नहीं गिनते।
अल्फा

7
मैं एक संदर्भ चाहता था और यह पाया- php.net/manual/en/language.types.array.php - "PHP 5.4 के रूप में आप लघु सरणी सिंटैक्स का भी उपयोग कर सकते हैं, जो सरणी को बदल देता है () [] के साथ।"
मर्विम

1
@ Prof83, आप मानक वर्ग $data = new stdClass();$data->someProp = 'someValue';का उपयोग कर सकते हैं PHPऔर $obj = (object) ['foo'=>'bar', 'baz'=>'biz'];एक सरणी (स्पष्ट प्रकार की कास्टिंग का उपयोग करके) को किसी ऑब्जेक्ट (stdClass) में परिवर्तित {}कर सकते हैं, लेकिन इसके बारे में , इसे भविष्य में लागू किया जा सकता है, लेकिन सुनिश्चित नहीं है कि :-)
अल्फा

19

2019 तक, []सिंटैक्स को जोड़े जाने में 7 साल हो गए हैं। array()मेरी राय में, पुराने विरासत कार्यक्रमों को छोड़कर यह काफी लंबा है ।


3
@ TheAlpha अच्छी तरह से, आज भी, मुझे यह जानने के लिए उत्सुक था कि क्या प्रदर्शन मतभेद थे
Cid

तुमने नाप लिया? मुझे लगता है कि वे केवल वैकल्पिक वाक्यविन्यास हैं, जो औसत दर्जे का नहीं होना चाहिए।
डेविड स्पेक्टर

6

यदि आप 5.3 या पिछले संस्करण का उपयोग कर रहे हैं तो आप []एक सरणी के साथ-साथ साहचर्य सरणी का उपयोग नहीं कर सकते हैं । यदि आप PHP के 5.4 या बाद के संस्करण का उपयोग कर रहे हैं तो आप array()या तो []एक सरणी, साहचर्य सरणी या यहां तक ​​कि बहुआयामी सरणी बनाने के लिए उपयोग कर सकते हैं ।


1

और के बारे में <?= ?>सवाल का हिस्सा: यह काफी हद तक है नहीं कम से कम 2019 में नहीं, पर सिकोड़ी।

  1. एक अच्छी तकनीकी खराबी: /software/151661/is-it-bad-practice-to-use-tag-in-php
  2. PSR-1 में एक नोट : फ़ाइलें केवल और केवल उपयोग करना चाहिए<?php<?= टैग का ।
  3. TL; DR: ऐसा कोई कारण नहीं है जिसका आप उपयोग नहीं कर सकते या नहीं करना चाहिए।

-12

Php 7.2 का उपयोग करना, मेरे लिए ऐसा लगता है बल्कि तब [मैं एक सरणी हूं] {मैं एक सरणी हूं काम करने के लिए लगता है}। अंतर {}और है []। मेरा कोड

<p>
  <label for="post_category"> Cat 1 </label>
  <input type="checkbox" name="post_category{first}" value="cat1">
  <br />
  <label for="post_category{second}"> Cat 2 </label>
  <input type="checkbox" name="post_category" value="cat2">
</p>

15
PHP कहाँ है? आप HTML लिख रहे हैं।
डोमडम्ब्रोगिया

1
इसके अलावा, ओपी के बारे में पूछे जाने वाले मामले के लिए घुंघराले ब्रेसिज़ काम नहीं करेंगे। आप घुंघराले ब्रेसिज़ के साथ एक सरणी नहीं बना सकते हैं, केवल सरणी तत्वों का उपयोग कर सकते हैं (चूंकि v5.4 अब तक - v7.3)।
अन्डिन 4ik
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.