Home  >  Q&A  >  body text

Solving PHP Error: Things to Consider When Converting an Array to a String

<p>I have a PHP file and I am trying to output a <code>$_POST</code>, but I get an error, here is the 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>Here is the code to output POST. </p> <pre class="brush:php;toolbar:false;">if(!empty($_POST['G'])){ echo $_POST['C']; }</pre> <p>But when the code runs, I get an error like this: </p> <pre class="brush:php;toolbar:false;">Notice: Array to string conversion in C:xampphtdocsPHISFinalSubmissionOfTheFormPHP.php on line 8</pre> <p>What does this error mean and how do I fix it? </p>
P粉538462187P粉538462187447 days ago547

reply all(2)I'll reply

  • P粉986860950

    P粉9868609502023-08-22 09:46:05

    The meaning of PHP Notice and how to reproduce it:

    If you pass a PHP array to a function that expects a string, such as echo or print, then the PHP interpreter will convert your array to a literal stringArray, throw this Notice and continue execution. 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 1
    Array

    In this case, the function print outputs the literal string Array to stdout, then logs the Notice to stderr and continues execution.

    Another PHP script example:

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

    Correction method 1: Use foreach loop to access array elements

    http://php.net/foreach

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

    Output:

    1
    2
    3

    Or contain array key name:

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

    Output:

    name: Joe
    email: joe@example.com

    Note that array elements can also be arrays. In this case, you can use foreach again or use array syntax to access the inner array elements, like $row['name']

    Correction method 2: Connect all cells in the array together:

    If it is just an ordinary one-dimensional array, you can use the delimiter to concatenate all cells into a string:

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

    Correction method 3: Convert array of complex structure to string:

    If your array has a complex structure but still need to convert it to a string, you can use http://php.net/json_encode

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

    Output:

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

    Quickly view the array structure: use the built-in php function

    If you just want to inspect the array contents for debugging purposes, you can use one of the following functions. Keep in mind that var_dump is the most verbose of them all and is usually preferred for this purpose

    Example:

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

    Output:

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

    reply
    0
  • P粉739886290

    P粉7398862902023-08-22 00:07:45

    When you have a lot of HTML input named C[], what you get on the other end of the POST array is an array of those values ​​$_POST['C'] . So when you echo it, you are trying to print an array, so it will just print Array and a hint.

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

    Also, if you don't know if it's an array or a string or whatever, you can use var_dump($var) and it will tell you what type it is and what its contents are . For debugging purposes only.

    reply
    0
  • Cancelreply