কীভাবে পিএইচপি ত্রুটি সমাধান করবেন 'নোটিশ: এরে স্ট্রিং রূপান্তরটিতে…'


116

আমার একটি পিএইচপি ফাইল রয়েছে যা $_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>'

এখানে পোষ্ট প্রতিধ্বনিত করার কোডটি।

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 ['সি']। এবং var_dump ($ _ পোষ্ট ['সি']) হ'ল অ্যারেয়ারে (3) {[0] => স্ট্রিং (1) "এ" [1] => স্ট্রিং (4) "পুরুষ" [2] => স্ট্রিং (6) "মহিলা" }. এবং var_dump ($ টেক্সটিং) অ্যারে (3) {[0] => স্ট্রিং (1) "এ" [1] => স্ট্রিং (4) "পুরুষ" [2] => স্ট্রিং (6) "মহিলা"}} ..
t4thilina

উত্তর:


110

আপনি যখন C[]অন্য প্রান্তে পোষ্ট অ্যারেতে যা পান তার নামকরণের জন্য অনেকগুলি HTML ইনপুট থাকে তবে এই মানগুলির একটি অ্যারে হয় $_POST['C']। সুতরাং আপনি যখন echo, আপনি একটি অ্যারে প্রিন্ট করার চেষ্টা করছেন, তাই এটি সমস্ত মুদ্রণ Arrayএবং একটি বিজ্ঞপ্তি।

কোনও অ্যারে সঠিকভাবে মুদ্রণের জন্য আপনি এটির এবং echoপ্রতিটি উপাদানটি লুপ করুন অথবা আপনি ব্যবহার করতে পারেন print_r

বিকল্প হিসাবে, আপনি যদি না জানেন যে এটি অ্যারে বা স্ট্রিং বা যা কিছু আছে তবে আপনি ব্যবহার করতে পারেন var_dump($var)যা এটি আপনাকে টাইপটি কী এবং এর সামগ্রী কী তা আপনাকে বলবে। শুধুমাত্র ডিবাগিং উদ্দেশ্যে এটি ব্যবহার করুন।


কে আপনার স্পষ্ট ব্যাখ্যার জন্য আপনাকে অনেক ধন্যবাদ। এটি ঠিক কী বলেছিল তা মুদ্রণ করে। এর অর্থ আমার অ্যারে ইতিমধ্যে পিএইচপি ফাইলে প্রেরণ করা হয়েছে। দেখে মনে হচ্ছে আমি কোনও সমস্যা ছাড়াই ব্যবহার করতে পারি। আবার ধন্যবাদ।
t4thilina

56

পিএইচপি বিজ্ঞপ্তির অর্থ কী এবং কীভাবে এটি পুনরুত্পাদন করা যায়:

যদি আপনি কোনও ফাংশনে কোনও পিএইচপি অ্যারে প্রেরণ করেন যা এর মতো স্ট্রিংটি প্রত্যাশা করে: echoবা print, তবে পিএইচপি ইন্টারপ্রেটার আপনার অ্যারেটিকে আক্ষরিক স্ট্রিংয়ে রূপান্তরিত করবে 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আক্ষরিক স্ট্রিংটি ডাম্প করে: Arrayস্ট্ডআউট করার জন্য এবং তারপরে স্টডারারে নোটিশটি লগ করে এবং চালিয়ে যায়।

পিএইচপি স্ক্রিপ্টের আরেকটি উদাহরণ:

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

আপনার কাছে দুটি বিকল্প রয়েছে, হয় স্ট্রিং কনভার্টারে অ্যারে ব্যবহার করে আপনার পিএইচপি অ্যারে স্ট্রিংয়ে কাস্ট করুন বা পিএইচপি বিজ্ঞপ্তিটি দমন করুন।

সংশোধন 1: বিল্টিন পিএইচপি ফাংশন প্রিন্ট_আর বা ভার_ডাম্প ব্যবহার করুন:

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 ব্যবহার করতে হয়েছিল। মুদ্রণ_আর (জসন_এনকোড (uth আউথডাটা)); এর সমান ফলাফল: [{"সিস্টেম_আইডি": "61a694d0-3605-4502-952b-38d87b451a56", "সিস্টেম_আউথ_আইডি": "caa5906f-d9ae-4297-8e9f-5ea8d9ed8b51" "সিস্টেম_সাস্থ্য_আর 55" a23d-6608c696f264 "," সিস্টেম_রোন্ডেট ":" 2019-04-27T22: 46: 07.090Z "}]
অ্যান্ড্রু

5

আপনি <input name='C[]'আপনার এইচটিএমএল ব্যবহার করছেন। ফর্মটি প্রেরণ করা হলে এটি পিএইচপি-তে একটি অ্যারে তৈরি করে।

আপনি echo $_POST['C'];সেই অ্যারে প্রতিধ্বনি করতে ব্যবহার করছেন - এটি কাজ করবে না, পরিবর্তে সেই বিজ্ঞপ্তিটি এবং "অ্যারে" শব্দটি নির্গত করবে।

বাকী কোডটি দিয়ে আপনি যা করেছেন তার উপর নির্ভর করে আপনার সম্ভবত ব্যবহার করা উচিত echo $_POST['C'][0];


2

Array to string conversion পিএইচপি x.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();
  }

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.