Why can't I echo the values in an array directly?
$list = array('Max', 'Alice', 'Brigitte');
echo($list); //This doesn't work
//But this does
foreach($list as $l){
echo($l . " ");
};
Why can't I echo the values in an array directly?
$list = array('Max', 'Alice', 'Brigitte');
echo($list); //This doesn't work
//But this does
foreach($list as $l){
echo($l . " ");
};
Because echo — Output one or more STRINGS
http://php.net/manual/en/function.echo.php
Try using var_dump for array http://php.net/manual/en/function.var-dump.php
You may have noticed that echo($list);
does produce some output:
Array
This is because $list
is cast to a string in the context of echo
. In fact, if you had warnings turned on, you would see a
Notice: Array to string conversion
for that statement. The defined behavior of PHP when converting arrays to strings is that arrays are always converted to the string "Array"
.
If you want to print the contents of the array without looping over it, you will need to use one of the various PHP functions that converts an array to a string more effectively. For a simple array of strings like your $list
, you can just use implode
.
echo implode(', ', $list);
But if you need to deal with a more complex array (if some elements are themselves arrays, for example) this will not work because of the same array to string conversion issue.
Let's see if I can explain this in a good way. Basically $list has a lot of more elements and things associated with it. When echoing $list it doesn't really know how to handle it. It has to do with how array data types work in PHP.