2011-11-26 13 views
12

के अंदर एक सरणी मान स्वरूपण करना मैं सोच रहा था कि मैं हेड्रोक के अंदर {number_format($row['my_number'])} जैसे कुछ क्यों नहीं कर सकता। क्या $myNumber जैसे वैरिएबल को परिभाषित करने के लिए इसका कोई उपाय नहीं है?हेरेडोक

http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.nowdoc पर देखा लेकिन कुछ भी नहीं मिला।

कोड

foreach ($dbh -> query($sql) as $row): 
    $myNumber = number_format($row['my_number']); 

    $table .= <<<EOT 
      <tr> 
      <td>{$row['my_number']}</td> // WORKS 
      <td>$myNumber</td> // WORKS 
      <td>{number_format($row['my_number'])}</td> // DOES NOT WORK! 
      </tr> 
EOT; 
endforeach; 
+0

ने कभी इसे स्वयं करने की कोशिश की? – KingCrunch

+2

हां। मैंने इसे खुद कोशिश की। – ksindi

+3

@ किंग कंचन जाहिर है हाँ, ओपी ने कोशिश की थी। उपरोक्त कोड उदाहरण देखें। –

उत्तर

25

आप {$ चर भाव का उपयोग करके एक हियरडॉक स्ट्रिंग में कार्य निष्पादित कर सकते हैं। लेकिन आप समारोह नाम पहले से के लिए एक चर परिभाषित करने की जरूरत:

$number_format = "number_format"; 

$table .= <<<EOT 
     <tr> 
     <td>{$row['my_number']}</td> // WORKS 
     <td>$myNumber</td> // WORKS 
     <td>{$number_format($row['my_number'])}</td> // DOES NOT WORK! 
     </tr> 

तो हार के इस प्रकार terseness की HEREDOCs उद्देश्य।


पठनीयता के लिए यह और भी इस उद्देश्य के लिए $expr = "htmlentities"; जैसा कोई सामान्य/शून्य समारोह नाम परिभाषा मददगार हो सकता है। तो फिर तुम लगभग किसी भी जटिल अभिव्यक्ति और हियरडॉक या doublequotes में सभी वैश्विक कार्यों का उपयोग कर सकते हैं:

" <td> {$expr(number_format($num + 7) . ':')} </td> " 

और मुझे लगता है {$expr( बस अधिक किसी को भी जो इस तरह के एक निर्माण भर आता है करने के लिए स्पष्ट है। (अन्यथा यह सिर्फ एक अजीब कामकाज है।)

+2

+1 मैंने इसे कभी नहीं देखा है। बहुत साफ़। –

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