PHP
एक परिवर्तनीय के मूल्य का उत्पादन
खोज…
परिचय
एक गतिशील और इंटरैक्टिव PHP प्रोग्राम बनाने के लिए, यह चर और उनके मूल्यों को आउटपुट करने के लिए उपयोगी है। PHP भाषा मूल्य आउटपुट के कई तरीकों की अनुमति देती है। यह विषय PHP में एक मान को छापने के मानक तरीकों को शामिल करता है और जहाँ इन विधियों का उपयोग किया जा सकता है।
टिप्पणियों
PHP में चर विभिन्न प्रकार के होते हैं। उपयोग के मामले के आधार पर, आप उन्हें ब्राउज़र को HTML के रूप में आउटपुट करना चाहते हैं, उन्हें डिबगिंग के लिए आउटपुट कर सकते हैं या उन्हें टर्मिनल पर आउटपुट कर सकते हैं (यदि कमांड लाइन के माध्यम से कोई एप्लिकेशन चला रहे हैं)।
नीचे कुछ सबसे अधिक इस्तेमाल की जाने वाली विधियाँ और भाषा निर्माण आउटपुट चर हैं:
-
echo
- आउटपुट एक या अधिक स्ट्रिंग्स -
print
- एक स्ट्रिंग आउटपुट करता है और1
(हमेशा) लौटाता है -
printf
- आउटपुट स्वरूपित स्ट्रिंग और आउटपुट स्ट्रिंग की लंबाई लौटाता है -
sprintf
- एक स्ट्रिंग को प्रारूपित करता है और स्वरूपित स्ट्रिंग को लौटाता है -
print_r
- तर्क या सामग्री को मानव-पठनीय स्ट्रिंग के रूप में लौटाता है -
var_dump
- अपने प्रकार और मूल्य सहित तर्क (नों) की सामग्री के बारे में मानव-पठनीय डिबगिंग जानकारी को आउटपुट करता है -
var_export
- आउटपुट या वैरिएबल के एक स्ट्रिंग प्रतिपादन को वैध PHP कोड के रूप में लौटाता है, जिसका उपयोग मूल्य को फिर से बनाने के लिए किया जा सकता है।
नोट: जब किसी ऑब्जेक्ट को स्ट्रिंग के रूप में आउटपुट करने की कोशिश की जाती है, तो PHP इसे स्ट्रिंग में बदलने की कोशिश करेगा (
__toString()
कॉल__toString()
- यदि ऑब्जेक्ट में ऐसी कोई विधि है)। यदि अनुपलब्ध है, तोObject of class [CLASS] could not be converted to string
समान एक त्रुटिObject of class [CLASS] could not be converted to string
सकती है। इस मामले में, आपको ऑब्जेक्ट का और निरीक्षण करना होगा, देखें: आउटपुटिंग-ए-स्ट्रक्चर्ड-ए-व्यू-ऑफ-एरेस-एंड-ऑब्जेक्ट्स ।
इको और प्रिंट
echo
और print
भाषा निर्माण हैं, कार्य नहीं। इसका मतलब यह है कि उन्हें तर्क के चारों ओर कोष्ठक की आवश्यकता नहीं होती है, जैसा कि एक फ़ंक्शन करता है (हालाँकि कोई हमेशा किसी भी PHP अभिव्यक्ति के आसपास कोष्ठक जोड़ सकता है और इस प्रकार echo("test")
कोई नुकसान भी नहीं करेगा)। वे एक चर, स्थिर, या अभिव्यक्ति के स्ट्रिंग प्रतिनिधित्व को आउटपुट करते हैं। उनका उपयोग सरणियों या वस्तुओं को प्रिंट करने के लिए नहीं किया जा सकता है।
स्ट्रिंग
Joel
को चर$name
असाइन करें$name = "Joel";
echo
औरprint
का उपयोग करके $ नाम के मूल्य को आउटपुट करेंecho $name; #> Joel print $name; #> Joel
कोष्ठक की आवश्यकता नहीं है, लेकिन इसका उपयोग किया जा सकता है
echo($name); #> Joel print($name); #> Joel
कई मापदंडों (केवल
echo
) का उपयोग करनाecho $name, "Smith"; #> JoelSmith echo($name, " ", "Smith"); #> Joel Smith
print
,echo
विपरीत, एक अभिव्यक्ति है (यह1
लौटाता है), और इस तरह इसे और अधिक स्थानों पर उपयोग किया जा सकता है:print("hey") && print(" ") && print("you"); #> you11
इसके बाद के संस्करण के बराबर है:
print ("hey" && (print (" " && print "you"))); #> you11
echo
लिए आशुलिपि अंकन
जब पीएचपी टैग के बाहर , के लिए एक आशुलिपि संकेतन echo
डिफ़ॉल्ट रूप से उपलब्ध है, का उपयोग कर <?=
उत्पादन शुरू करने के लिए और ?>
इसे समाप्त करने के। उदाहरण के लिए:
<p><?=$variable?></p>
<p><?= "This is also PHP" ?></p>
ध्यान दें कि कोई समाप्ति नहीं है ;
। यह काम करता है क्योंकि समापन PHP टैग एकल कथन के लिए टर्मिनेटर के रूप में कार्य करता है। तो, इस शॉर्टहैंड नोटेशन में अर्धविराम को छोड़ना पारंपरिक है।
print
प्राथमिकता
हालांकि print
भाषा निर्माण है लेकिन इसमें ऑपरेटर की तरह प्राथमिकता है। यह =
+=
-=
*=
**=
/=
.=
%=
&=
and
ऑपरेटरों के बीच होता है और इसने संघ छोड़ दिया है। उदाहरण:
echo '1' . print '2' + 3; //output 511
कोष्ठक के साथ एक ही उदाहरण:
echo '1' . print ('2' + 3); //output 511
echo
और print
बीच अंतर
संक्षेप में, दो मुख्य अंतर हैं:
-
print
केवल एक पैरामीटर लेता है, जबकिecho
में कई पैरामीटर हो सकते हैं। -
print
एक मूल्य देता है, इसलिए एक अभिव्यक्ति के रूप में इस्तेमाल किया जा सकता है।
सरणियों और वस्तुओं के एक संरचित दृश्य को आउटपुट करना
print_r()
- डीबगिंग के लिए एरे और ऑब्जेक्ट्स आउटपुट करना
print_r
एक सरणी या ऑब्जेक्ट के एक मानव पठनीय प्रारूप को आउटपुट करेगा।
आपके पास एक चर हो सकता है जो एक सरणी या वस्तु है। इसे echo
साथ आउटपुट देने की कोशिश करने से त्रुटि होगी:
Notice: Array to string conversion
। आप इसके बजाय इस चर के एक मानव पठनीय प्रारूप को डंप करने के लिए print_r
फ़ंक्शन का उपयोग कर सकते हैं।
आप स्ट्रिंग के रूप में सामग्री को वापस करने के लिए दूसरे पैरामीटर के रूप में सही पास कर सकते हैं।
$myobject = new stdClass();
$myobject->myvalue = 'Hello World';
$myarray = [ "Hello", "World" ];
$mystring = "Hello World";
$myint = 42;
// Using print_r we can view the data the array holds.
print_r($myobject);
print_r($myarray);
print_r($mystring);
print_r($myint);
यह निम्न आउटपुट देता है:
stdClass Object
(
[myvalue] => Hello World
)
Array
(
[0] => Hello
[1] => World
)
Hello World
42
इसके अलावा, print_r
से आउटपुट को एक स्ट्रिंग के रूप में कैप्चर किया जा सकता है, बजाय केवल गूँज के। उदाहरण के लिए, निम्न कोड $myarray
के स्वरूपित संस्करण को एक नए चर में डंप करेगा:
$formatted_array = print_r($myarray, true);
ध्यान दें कि यदि आप एक ब्राउज़र में PHP का आउटपुट देख रहे हैं, और इसे HTML के रूप में व्याख्या किया गया है, तो लाइन ब्रेक नहीं दिखाए जाएंगे और जब तक आप कुछ ऐसा नहीं करते हैं तब तक आउटपुट बहुत कम सुपाच्य होगा
echo '<pre>' . print_r($myarray, true) . '</pre>';
किसी पृष्ठ के स्रोत कोड को खोलने से आपके वैरिएबल को उसी तरह से स्वरूपित किया जाएगा, जैसे कि
<pre>
टैग के उपयोग के बिना।
वैकल्पिक रूप से आप ब्राउज़र को बता सकते हैं कि आप जो आउटपुट दे रहे हैं वह सादा पाठ है, और HTML नहीं:
header('Content-Type: text/plain; charset=utf-8');
print_r($myarray);
var_dump()
- तर्क की सामग्री के बारे में मानव-पठनीय डिबगिंग जानकारी इसके प्रकार और मूल्य सहित
print_r
की तुलना में आउटपुट अधिक विस्तृत है क्योंकि यह चर के प्रकार के साथ-साथ इसके मूल्य और अन्य जानकारी जैसे ऑब्जेक्ट आईडी, सरणी आकार, स्ट्रिंग लंबाई, संदर्भ मार्कर, आदि को भी आउटपुट करता है।
आप डिबगिंग के लिए अधिक विस्तृत संस्करण को आउटपुट करने के लिए var_dump
का उपयोग कर सकते हैं।
var_dump($myobject, $myarray, $mystring, $myint);
आउटपुट अधिक विस्तृत है:
object(stdClass)#12 (1) {
["myvalue"]=>
string(11) "Hello World"
}
array(2) {
[0]=>
string(5) "Hello"
[1]=>
string(5) "World"
}
string(11) "Hello World"
int(42)
नोट : यदि आप अपने विकास के वातावरण में xDebug का उपयोग कर रहे हैं, तो var_dump का आउटपुट सीमित / डिफ़ॉल्ट रूप से छोटा है। इसे बदलने के विकल्पों के बारे में अधिक जानकारी के लिए आधिकारिक दस्तावेज देखें।
var_export()
- आउटपुट मान्य PHP
कोड
var_export()
आइटम का PHP
पार्स करने योग्य प्रतिनिधित्व डंप करता है।
आप सामग्री को एक चर में वापस करने के लिए दूसरे पैरामीटर के रूप में सही पास कर सकते हैं।
var_export($myarray);
var_export($mystring);
var_export($myint);
आउटपुट मान्य PHP कोड है:
array (
0 => 'Hello',
1 => 'World',
)
'Hello World'
42
सामग्री को एक चर में रखने के लिए, आप यह कर सकते हैं:
$array_export = var_export($myarray, true);
$string_export = var_export($mystring, true);
$int_export = var_export($myint, 1); // any `Truthy` value
उसके बाद, आप इसे इस तरह से आउटपुट कर सकते हैं:
printf('$myarray = %s; %s', $array_export, PHP_EOL);
printf('$mystring = %s; %s', $string_export, PHP_EOL);
printf('$myint = %s; %s', $int_export, PHP_EOL);
यह निम्न आउटपुट का उत्पादन करेगा:
$myarray = array (
0 => 'Hello',
1 => 'World',
);
$mystring = 'Hello World';
$myint = 42;
प्रिंटफ बनाम स्प्रिंट
printf
प्लेसहोल्डर्स का उपयोग करके एक स्वरूपित स्ट्रिंग का उत्पादन करेगा
sprintf
प्रारूपित स्ट्रिंग लौटाएगा
$name = 'Jeff';
// The `%s` tells PHP to expect a string
// ↓ `%s` is replaced by ↓
printf("Hello %s, How's it going?", $name);
#> Hello Jeff, How's it going?
// Instead of outputting it directly, place it into a variable ($greeting)
$greeting = sprintf("Hello %s, How's it going?", $name);
echo $greeting;
#> Hello Jeff, How's it going?
इन 2 कार्यों के साथ एक संख्या को प्रारूपित करना भी संभव है। इसका उपयोग पैसे का प्रतिनिधित्व करने के लिए उपयोग किए जाने वाले दशमलव मान को प्रारूपित करने के लिए किया जा सकता है ताकि इसमें हमेशा 2 दशमलव अंक हों।
$money = 25.2;
printf('%01.2f', $money);
#> 25.20
दो कार्यों vprintf
और vsprintf
के रूप में काम printf
और sprintf
, लेकिन एक प्रारूप स्ट्रिंग और मूल्यों की एक सरणी स्वीकार करते हैं, अलग-अलग चर के बजाय।
गूंज के साथ कंकण
आप उन्हें आउटपुट करते समय स्ट्रिंग्स "एंड टू एंड" से जुड़ने के लिए कॉन्टेक्टेशन का उपयोग कर सकते हैं (उदाहरण के लिए echo
या print
साथ)।
आप एक का उपयोग कर चर को समाप्त कर सकते हैं .
(अवधि / डॉट)।
// String variable
$name = 'Joel';
// Concatenate multiple strings (3 in this example) into one and echo it once done.
// 1. ↓ 2. ↓ 3. ↓ - Three Individual string items
echo '<p>Hello ' . $name . ', Nice to see you.</p>';
// ↑ ↑ - Concatenation Operators
#> "<p>Hello Joel, Nice to see you.</p>"
समवसरण के समान, echo
(जब कोष्ठक के बिना उपयोग किया जाता है) का उपयोग तार और चर को एक साथ करने के लिए (अन्य मनमाने ढंग से भाव के साथ) अल्पविराम (,) का उपयोग करके किया जा सकता है।
$itemCount = 1;
echo 'You have ordered ', $itemCount, ' item', $itemCount === 1 ? '' : 's';
// ↑ ↑ ↑ - Note the commas
#> "You have ordered 1 item"
स्ट्रिंग गूंज बनाम गूंज के लिए कई तर्क पारित
इको कमांड में कई तर्कों को पास करना कुछ परिस्थितियों में स्ट्रिंग संगति की तुलना में अधिक फायदेमंद है। तर्कों को आउटपुट में उसी क्रम में लिखा जाता है जैसे वे पास होते हैं।
echo "The total is: ", $x + $y;
समवर्ती के साथ समस्या यह है कि अवधि .
अभिव्यक्ति में पूर्वता लेता है। यदि सहमति व्यक्त की जाती है, तो उपरोक्त अभिव्यक्ति को सही व्यवहार के लिए अतिरिक्त कोष्ठक की आवश्यकता होती है। अवधि की पूर्वता टर्नरी ऑपरेटरों को भी प्रभावित करती है।
echo "The total is: " . ($x + $y);
बड़े पूर्णांक आउटपुट
32-बिट सिस्टम पर, PHP_INT_MAX
से बड़े पूर्णांक स्वचालित रूप से फ्लोट में परिवर्तित हो जाते हैं। पूर्णांक मूल्यों के रूप में इन Outputting (यानी गैर वैज्ञानिक संकेतन) के साथ किया जा सकता है printf
, का उपयोग कर float
प्रतिनिधित्व, जैसा कि नीचे बताया:
foreach ([1, 2, 3, 4, 5, 6, 9, 12] as $p) {
$i = pow(1024, $p);
printf("pow(1024, %d) > (%7s) %20s %38.0F", $p, gettype($i), $i, $i);
echo " ", $i, "\n";
}
// outputs:
pow(1024, 1) integer 1024 1024 1024
pow(1024, 2) integer 1048576 1048576 1048576
pow(1024, 3) integer 1073741824 1073741824 1073741824
pow(1024, 4) double 1099511627776 1099511627776 1099511627776
pow(1024, 5) double 1.1258999068426E+15 1125899906842624 1.1258999068426E+15
pow(1024, 6) double 1.1529215046068E+18 1152921504606846976 1.1529215046068E+18
pow(1024, 9) double 1.2379400392854E+27 1237940039285380274899124224 1.2379400392854E+27
pow(1024, 12) double 1.3292279957849E+36 1329227995784915872903807060280344576 1.3292279957849E+36
नोट: फ्लोट सटीक के लिए बाहर देखो, जो अनंत नहीं है!
हालांकि यह अच्छा लग रहा है, इस आकस्मिक उदाहरण में संख्याओं को बाइनरी नंबर के रूप में दर्शाया जा सकता है क्योंकि वे 1024 (और 2) की सभी शक्तियां हैं। उदाहरण के लिए देखें:
$n = pow(10, 27);
printf("%s %.0F\n", $n, $n);
// 1.0E+27 1000000000000000013287555072
सूचकांक और मूल्य के साथ एक बहुआयामी सरणी का उत्पादन करें और तालिका में प्रिंट करें
Array
(
[0] => Array
(
[id] => 13
[category_id] => 7
[name] => Leaving Of Liverpool
[description] => Leaving Of Liverpool
[price] => 1.00
[virtual] => 1
[active] => 1
[sort_order] => 13
[created] => 2007-06-24 14:08:03
[modified] => 2007-06-24 14:08:03
[image] => NONE
)
[1] => Array
(
[id] => 16
[category_id] => 7
[name] => Yellow Submarine
[description] => Yellow Submarine
[price] => 1.00
[virtual] => 1
[active] => 1
[sort_order] => 16
[created] => 2007-06-24 14:10:02
[modified] => 2007-06-24 14:10:02
[image] => NONE
)
)
तालिका में सूचकांक और मूल्य के साथ आउटपुट बहुआयामी सरणी
<table>
<?php
foreach ($products as $key => $value) {
foreach ($value as $k => $v) {
echo "<tr>";
echo "<td>$k</td>"; // Get index.
echo "<td>$v</td>"; // Get value.
echo "</tr>";
}
}
?>
</table>