{ }
PHP में स्ट्रिंग शाब्दिक में (घुंघराले ब्रेसिज़) का क्या अर्थ है ?
{ }
PHP में स्ट्रिंग शाब्दिक में (घुंघराले ब्रेसिज़) का क्या अर्थ है ?
जवाबों:
यह स्ट्रिंग प्रक्षेप के लिए जटिल (घुंघराले) वाक्यविन्यास है। मैनुअल से:
जटिल (घुंघराले) वाक्य रचना
इसे जटिल नहीं कहा जाता है क्योंकि वाक्य रचना जटिल है, लेकिन क्योंकि यह जटिल अभिव्यक्तियों के उपयोग की अनुमति देता है।
इस सिंटैक्स के माध्यम से किसी भी स्केलर वैरिएबल, एरे तत्व या ऑब्जेक्ट प्रॉपर्टी को एक स्ट्रिंग प्रतिनिधित्व के साथ शामिल किया जा सकता है। सीधे शब्दों में के रूप में यह स्ट्रिंग के बाहर प्रकट होता अभिव्यक्ति उसी तरह लिखते हैं, और उसके बाद में लपेट
{
और}
। चूंकि{
बच नहीं सकता है, इस सिंटैक्स को केवल तभी पहचाना जाएगा जब$
तुरंत इसका अनुसरण किया जाएगा{
।{\$
शाब्दिक रूप से प्राप्त करने के लिए उपयोग करें{$
। इसे स्पष्ट करने के लिए कुछ उदाहरण:<?php // Show all errors error_reporting(E_ALL); $great = 'fantastic'; // Won't work, outputs: This is { fantastic} echo "This is { $great}"; // Works, outputs: This is fantastic echo "This is {$great}"; echo "This is ${great}"; // Works echo "This square is {$square->width}00 centimeters broad."; // Works, quoted keys only work using the curly brace syntax echo "This works: {$arr['key']}"; // Works echo "This works: {$arr[4][3]}"; // This is wrong for the same reason as $foo[bar] is wrong outside a string. // In other words, it will still work, but only because PHP first looks for a // constant named foo; an error of level E_NOTICE (undefined constant) will be // thrown. echo "This is wrong: {$arr[foo][3]}"; // Works. When using multi-dimensional arrays, always use braces around arrays // when inside of strings echo "This works: {$arr['foo'][3]}"; // Works. echo "This works: " . $arr['foo'][3]; echo "This works too: {$obj->values[3]->name}"; echo "This is the value of the var named $name: {${$name}}"; echo "This is the value of the var named by the return value of getName(): {${getName()}}"; echo "This is the value of the var named by the return value of \$object->getName(): {${$object->getName()}}"; // Won't work, outputs: This is the return value of getName(): {getName()} echo "This is the return value of getName(): {getName()}"; ?>
अक्सर, यह वाक्यविन्यास अनावश्यक है। उदाहरण के लिए, यह:
$a = 'abcd';
$out = "$a $a"; // "abcd abcd";
इस के समान ही व्यवहार करता है:
$out = "{$a} {$a}"; // same
तो घुंघराले ब्रेसिज़ अनावश्यक हैं। लेकिन यह :
$out = "$aefgh";
आपकी त्रुटि स्तर के आधार पर, या तो काम नहीं करेगा या एक त्रुटि उत्पन्न करेगा क्योंकि कोई चर नाम नहीं है $aefgh
, इसलिए आपको यह करने की आवश्यकता है:
$out = "${a}efgh"; // or
$out = "{$a}efgh";
$vars='x:3,y:9'; $json="{{$vars}}";
। क्युगुआंग के लेख के लिए धन्यवाद ।
$out = '$aefgh'
; (यदि आपको शाब्दिक रूप से $ aefgh की आवश्यकता है)
SimpleXMLElement
: {}
नोड का उपयोग करने के लिए उपयोग किया जाता है, जैसे $element[0]->{0}
। चूंकि संपत्ति "0" मौजूद नहीं हो सकती है, यह ट्रिगर __get
/ __set
विधि होगी । यह संक्षेप में आपको ArrayAccess
अनुक्रमणिका एक्सेस के लिए एक विकल्प देता है , जैसे 3v4l.org/1F254 ।
$min=1;$max=5; echo ".{{$min},{$max}}"
पैदावार .{1,5}
(मुझे यह जानने में परेशानी थी कि @ BobStein की टिप्पणी में "डबल [घुंघराले ब्रेसिज़]" का उल्लेख कैसे किया गया है
जैसा कि मेरे लिए, घुंघराले ब्रेसिज़ कॉकटेल के प्रतिस्थापन के रूप में काम करते हैं, वे टाइप करने के लिए तेज होते हैं और कोड साफ दिखता है। याद रखें कि दोहरे उद्धरण चिह्नों का उपयोग करें ("") क्योंकि उनकी सामग्री PHP द्वारा पार्स की जाती है, क्योंकि एकल उद्धरणों ('') में आपको उपलब्ध कराए गए चर का शाब्दिक नाम मिलेगा :
<?php
$a = '12345';
// This works:
echo "qwe{$a}rty"; // qwe12345rty, using braces
echo "qwe" . $a . "rty"; // qwe12345rty, concatenation used
// Does not work:
echo 'qwe{$a}rty'; // qwe{$a}rty, single quotes are not parsed
echo "qwe$arty"; // qwe, because $a became $arty, which is undefined
?>
SHIFT
दोहरे उद्धरण चिह्नों और घुंघराले कोष्ठकों के लिए कुंजी दबानी होगी। यह तेज होगा हालांकि यदि आप कड़ाई से दोहरे उद्धरण चिह्नों का उपयोग करते हैं।
evaluate
इसके बजाय का उपयोग करेगाparse
मुझे ऑब्जेक्ट एट्रिब्यूट्स एक्सेस करने के लिए भी उपयोगी पाया गया है, जहां कुछ इटरेटर द्वारा विशेषता नाम अलग-अलग हैं। उदाहरण के लिए, मैंने समय अवधि के एक सेट के लिए नीचे दिए गए पैटर्न का उपयोग किया है: घंटा, दिन, महीना।
$periods=array('hour', 'day', 'month');
foreach ($periods as $period)
{
$this->{'value_'.$period}=1;
}
इसी पद्धति का उपयोग कक्षा के तरीकों तक पहुंचने के लिए भी किया जा सकता है। स्ट्रिंग्स और स्ट्रिंग चर का उपयोग करते हुए, बस उसी तरीके से विधि नाम का निर्माण करें।
आप आसानी से अवधि द्वारा मूल्य भंडारण के लिए एक सरणी का उपयोग करने का तर्क दे सकते हैं। यदि यह एप्लिकेशन केवल PHP होता, तो मैं सहमत होता। मैं इस पैटर्न का उपयोग तब करता हूं जब वर्ग डेटाबेस तालिका में फ़ील्ड को मैप करता है। हालांकि सीरियलाइज़ेशन का उपयोग करके किसी डेटाबेस में सरणियों को संग्रहीत करना संभव है, यह अक्षम है, और व्यक्तिगत क्षेत्रों को अनुक्रमित किए जाने पर व्यर्थ है। मैं अक्सर क्षेत्र के नाम की एक सरणी जोड़ देता हूं, जो कि दोनों दुनिया के सर्वश्रेष्ठ लोगों के लिए पुनरावृत्त द्वारा कुंजीबद्ध है।
class timevalues
{
// Database table values:
public $value_hour; // maps to values.value_hour
public $value_day; // maps to values.value_day
public $value_month; // maps to values.value_month
public $values=array();
public function __construct()
{
$this->value_hour=0;
$this->value_day=0;
$this->value_month=0;
$this->values=array(
'hour'=>$this->value_hour,
'day'=>$this->value_day,
'month'=>$this->value_month,
);
}
}
यहाँ कोड है जो मुझे एक वर्डप्रेस प्लगइन से मिला है
$data = $wpdb->get_results("select * from {$wpdb->prefix}download_monitor_files");
यह जटिल तारों को स्वरूपित करने के लिए वास्तव में आसान तकनीक है।