解決PHP錯誤:將陣列轉換為字串時的注意事項
P粉538462187
2023-08-21 12:23:52
<p>我有一個PHP文件,試圖輸出一個<code>$_POST</code>,但是我得到了一個錯誤,下面是代碼:</p>
<pre class="brush:php;toolbar:false;">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>'</pre>
<p>這裡是輸出POST的程式碼。 </p>
<pre class="brush:php;toolbar:false;">if(!empty($_POST['G'])){
echo $_POST['C'];
}</pre>
<p>但是當程式碼運行時,我得到了一個錯誤,像這樣:</p>
<pre class="brush:php;toolbar:false;">Notice: Array to string conversion in
C:xampphtdocsPHISFinalSubmissionOfTheFormPHP.php on line 8</pre>
<p>這個錯誤是什麼意思,我該如何修復它? </p>
PHP Notice的意義及如何重現:
#如果你將一個PHP數組傳遞給一個期望字串的函數,例如
echo
或print
,那麼PHP解釋器會將你的陣列轉換為字面字串Array
,拋出這個Notice並繼續執行。例如:在這種情況下,函數
print
將字面字串Array
輸出到stdout,然後將Notice記錄到stderr並繼續執行。另一個PHP腳本的範例:
修正方法1:使用foreach迴圈存取陣列元素
http://php.net/foreach
輸出:
或包含陣列鍵名:
輸出:
注意,陣列元素也可以是陣列。在這種情況下,可以再次使用
foreach
或使用陣列語法存取內部數組元素,例如$row['name']
修正方法2:將陣列中的所有單元格連接在一起:
如果只是一個普通的一維數組,可以使用分隔符號將所有單元格連接成一個字串:
修正方法3:將複雜結構的陣列轉換為字串:
如果你的陣列有複雜的結構,但仍需要將其轉換為字串,可以使用http://php.net/json_encode
輸出:
快速查看陣列結構:使用內建的php函數
如果只是為了偵錯目的而檢查陣列內容,可以使用下列函數之一。請記住,var_dump是其中最詳細的,通常首選用於此目的
#範例:
輸出:
當你有很多命名為
C[]
的HTML輸入時,你在POST數組的另一端得到的是這些值的數組$_POST['C']
。所以當你echo
它時,你正在嘗試列印一個數組,所以它只會列印Array
和一個提示。要正確列印一個數組,你可以循環遍歷它並
echo
每個元素,或者你可以使用print_r
。另外,如果你不知道它是一個陣列還是一個字串或其他什麼,你可以使用
var_dump($var)
,它會告訴你它是什麼類型和它的內容是什麼。僅用於調試目的。