PHP通知の意味とその再現方法:
echoまたはのような文字列が必要な関数にPHP配列を送信すると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はリテラル文字列Arrayをstdoutにダンプし、Notderを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関数print_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を使用して、配列をjson文字列に縮小します。
$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.
$Texting[i]タイプミスは?$Texting[$i]代わりにすべきではないですか?