How to solve PHP error 'Notice: Array to string conversion in...' How to solve PHP error 'Notice: Array to string conversion in...' arrays arrays

How to solve PHP error 'Notice: Array to string conversion in...'


When you have many HTML inputs named C[] what you get in the POST array on the other end is an array of these values in $_POST['C']. So when you echo that, you are trying to print an array, so all it does is print Array and a notice.

To print properly an array, you either loop through it and echo each element, or you can use print_r.

Alternatively, if you don't know if it's an array or a string or whatever, you can use var_dump($var) which will tell you what type it is and what it's content is. Use that for debugging purposes only.


What the PHP Notice means and how to reproduce it:

If you send a PHP array into a function that expects a string like: echo or print, then the PHP interpreter will convert your array to the literal string Array, throw this Notice and keep going. For example:

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 1Array

In this case, the function print dumps the literal string: Array to stdout and then logs the Notice to stderr and keeps going.

Another example in a PHP script:

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

Correction 1: use foreach loop to access array elements

http://php.net/foreach

$stuff = array(1,2,3);foreach ($stuff as $value) {    echo $value, "\n";}

Prints:

123

Or along with array keys

$stuff = array('name' => 'Joe', 'email' => 'joe@example.com');foreach ($stuff as $key => $value) {    echo "$key: $value\n";}

Prints:

name: Joeemail: joe@example.com

Note that array elements could be arrays as well. In this case either use foreach again or access this inner array elements using array syntax, e.g. $row['name']

Correction 2: Joining all the cells in the array together:

In case it's just a plain 1-demensional array, you can simply join all the cells into a string using a delimiter:

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

Correction 3: Stringify an array with complex structure:

In case your array has a complex structure but you need to convert it to a string anyway, then use http://php.net/json_encode

$stuff = array('name' => 'Joe', 'email' => 'joe@example.com');print json_encode($stuff);

Prints

{"name":"Joe","email":"joe@example.com"}

A quick peek into array structure: use the builtin php functions

If you want just to inspect the array contents for the debugging purpose, use one of the following functions. Keep in mind that var_dump is most informative of them and thus usually being preferred for the purpose

examples

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

Prints:

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


You are using <input name='C[]' in your HTML. This creates an array in PHP when the form is sent.

You are using echo $_POST['C']; to echo that array - this will not work, but instead emit that notice and the word "Array".

Depending on what you did with the rest of the code, you should probably use echo $_POST['C'][0];