खोज…


परिचय

एक गतिशील और इंटरैक्टिव 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 भाषा निर्माण है लेकिन इसमें ऑपरेटर की तरह प्राथमिकता है। यह = += -= *= **= /= .= %= &= and ऑपरेटरों के बीच होता है और इसने संघ छोड़ दिया है। उदाहरण:

echo '1' . print '2' + 3; //output 511

कोष्ठक के साथ एक ही उदाहरण:

echo '1' . print ('2' + 3); //output 511

echo और print बीच अंतर

संक्षेप में, दो मुख्य अंतर हैं:

  • print केवल एक पैरामीटर लेता है, जबकि echo में कई पैरामीटर हो सकते हैं।
  • print एक मूल्य देता है, इसलिए एक अभिव्यक्ति के रूप में इस्तेमाल किया जा सकता है।

सरणियों और वस्तुओं के एक संरचित दृश्य को आउटपुट करना

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>


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow