PHP त्रुटि को कैसे हल करें 'सूचना: स्ट्रिंग में रूपांतरण करने के लिए ...'


116

मेरे पास एक PHP फ़ाइल है जो एको को इको करने की कोशिश करती है $_POSTऔर मुझे एक त्रुटि मिलती है, यहाँ कोड है:

echo "<html>";
echo "<body>";
for($i=0; $i<5;$i++){
    echo "<input name='C[]' value='$Texting[$i]' " . 
         "style='background-color:#D0A9F5;'></input>";

}
echo "</body>";
echo "</html>";
echo '<input type="submit" value="Save The Table" name="G"></input>'

यहाँ POST को प्रतिध्वनित करने का कोड है।

if(!empty($_POST['G'])){
    echo $_POST['C'];
}

लेकिन जब कोड चलता है तो मुझे एक त्रुटि मिलती है जैसे:

Notice: Array to string conversion in 
C:\xampp\htdocs\PHIS\FinalSubmissionOfTheFormPHP.php on line 8

इस त्रुटि का क्या अर्थ है और मैं इसे कैसे ठीक करूं?


कौन सी पंक्ति 8 है? है $Texting[i]लिखने में कोई त्रुटि? $Texting[$i]इसके बजाय नहीं होना चाहिए ?
अमल मुरली

कृपया करके दिखाएं var_dump($Texting)
बमर

1
हाय ... लाइन 8 का मतलब है, गूंज $ _POST ['C']। और var_dump ($ _ POST ['C') अर्रेयर्रे (3) {[0] => स्ट्रिंग (1) "ए" [1] => स्ट्रिंग (4) "पुरुष" [2] => स्ट्रिंग (6) "महिला" }। और var_dump ($ टेक्स्टिंग) सरणी (3) {[0] => स्ट्रिंग (1) "ए" [1] => स्ट्रिंग (4) "पुरुष" [2] => स्ट्रिंग (6) "महिला"} है। ..
t4thilina

जवाबों:


110

जब आपके पास कई HTML इनपुट होते हैं जिनका नाम C[]आपको दूसरे छोर पर POST सरणी में मिलता है, तो इन मानों की एक सरणी होती है $_POST['C']। इसलिए जब आप ऐसा करते हैं echo, तो आप एक सरणी प्रिंट करने का प्रयास कर रहे हैं, इसलिए यह सब प्रिंट Arrayऔर एक नोटिस है।

किसी सरणी को ठीक से प्रिंट करने के लिए, आप या तो उसके और echoप्रत्येक तत्व के माध्यम से लूप करते हैं, या आप उपयोग कर सकते हैं print_r

वैकल्पिक रूप से, यदि आपको नहीं पता कि यह एक सरणी या एक स्ट्रिंग है या जो भी है, तो आप इसका उपयोग कर सकते हैं var_dump($var)जो आपको बताएगा कि यह किस प्रकार का है और सामग्री क्या है। केवल डिबगिंग उद्देश्यों के लिए इसका उपयोग करें।


K आपके स्पष्ट स्पष्टीकरण के लिए बहुत बहुत धन्यवाद। यह प्रिंट करता है कि आपने वास्तव में क्या कहा। इसका मतलब है कि मेरी सरणी पहले से ही PHP फ़ाइल में भेज दी गई है। लगता है कि मैं बिना किसी समस्या के उपयोग कर सकता हूं। फिर से धन्यवाद
t4thilina

56

PHP सूचना का क्या अर्थ है और इसे कैसे पुन: प्रस्तुत करना है:

यदि आप किसी फ़ंक्शन में PHP सरणी भेजते हैं, जो स्ट्रिंग की अपेक्षा करता है: echoया print, तो PHP दुभाषिया आपके सरणी को शाब्दिक स्ट्रिंग में बदल देगा Array, इस सूचना को फेंक दें और चलते रहें। उदाहरण के लिए:

php> print(array(1,2,3))

PHP Notice:  Array to string conversion in 
/usr/local/lib/python2.7/dist-packages/phpsh/phpsh.php(591) :
eval()'d code on line 1
Array

इस स्थिति में, फ़ंक्शन printशाब्दिक स्ट्रिंग को डंप करता है: Arraystdout करने के लिए और फिर stderr को नोटिस लॉग करता है और चलता रहता है।

PHP स्क्रिप्ट में एक और उदाहरण:

<?php
    $stuff = array(1,2,3);
    print $stuff;  //PHP Notice:  Array to string conversion in yourfile on line 3
?>

आपके पास 2 विकल्प हैं, या तो स्ट्रिंग कनवर्टर के लिए एक सरणी का उपयोग करके अपने PHP सरणी को स्ट्रिंग करें या PHP नोटिस को दबाएं।

सुधार 1: बिल्ट php फ़ंक्शन प्रिंट_r या var_dump का उपयोग करें:

http://php.net/manual/en/function.print-r.php या http://php.net/manual/en/function.var-dump.php

$stuff = array(1,2,3);
print_r($stuff);
$stuff = array(3,4,5);
var_dump($stuff);

प्रिंटों:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)
array(3) {
  [0]=>
  int(3)
  [1]=>
  int(4)
  [2]=>
  int(5)
}

सुधार 2: json_encode का उपयोग करके ऐज को स्ट्रिंग स्ट्रिंग को संक्षिप्त करें:

$stuff = array(1,2,3);
print json_encode($stuff);   //Prints [1,2,3]

सुधार 3: सरणी में सभी कोशिकाओं को एक साथ जोड़ना:

<?php
    $stuff = array(1,2,3);
    print implode(", ", $stuff);    //prints 1, 2, 3
    print join(',', $stuff);        //prints 1, 2, 3
?>

सुधार 4: नोटिस को दबाएं:

error_reporting(0);
print(array(1,2,3));    //Prints 'Array' without a Notice.

यह स्वीकृत उत्तर होना चाहिए। मेरी बहुत मदद की। मुझे इस उत्तर के साथ json_encode का भी उपयोग करना था। Print_r (json_encode ($ AuthData)); इसके समान परिणाम: [{"system_id": "61a694d0-3605-4502-952b-38d87b451a56", "system_auth_id": "caa5906f-d9ae-4297-8e9f5d8ed8b51", "सिस्टम," a23d-6608c696f264 "," system_rundate ":" 2019-04-27T22: 46: 07.090Z "}]
एंड्रयू

5

आप <input name='C[]'अपने HTML में उपयोग कर रहे हैं । जब फ़ॉर्म भेजा जाता है तो यह PHP में एक सरणी बनाता है।

आप echo $_POST['C'];उस सरणी को प्रतिध्वनित करने के लिए उपयोग कर रहे हैं - यह काम नहीं करेगा, बल्कि उस सूचना और "एरे" शब्द का उत्सर्जन करें।

आपने बाकी कोड के साथ क्या किया है, इसके आधार पर, आपको संभवतः उपयोग करना चाहिए echo $_POST['C'][0];


3

Array to string conversion सूचना के बजाय php 7.x के नवीनतम संस्करणों में त्रुटि है, और आगे कोड निष्पादन को रोकता है।

का उपयोग करते हुए print, echoसरणी पर अब और कोई विकल्प नहीं है।

त्रुटियों और नोटिसों को दबाना एक अच्छा अभ्यास नहीं है, खासकर जब विकास के माहौल में और अभी भी कोड डिबगिंग।

का प्रयोग करें var_dump, print_r, पुनरावृति इनपुट मूल्य के माध्यम से का उपयोग कर foreachयाfor ऐसे नाम हैं जो इनपुट सरणियों के रूप में घोषित कर रहे हैं के लिए उत्पादन इनपुट डेटा के लिए ( ' name[]')

त्रुटियों को पकड़ने के लिए सबसे आम अभ्यास try/catchब्लॉक का उपयोग कर रहा है, जो हमें कोड निष्पादन में रुकावट को रोकने में मदद करता है जो tryब्लॉक के भीतर लिपटे संभावित त्रुटियों का कारण हो सकता है ।

  try{  //wrap around possible cause of error or notice

    if(!empty($_POST['G'])){
        echo $_POST['C'];
    }

  }catch(Exception $e){

    //handle the error message $e->getMessage();
  }

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.