How to convert a PHP object to a string?
Why do you need this string? If you just need to visualize it for debugging, you can use var_dump()
, print_r()
, or $s = print_r($var, 1);
to really make it into a string for further theming. If you need to send the object as text to somewhere else (database, Javascript code), you have a choice of serialize, json_encode, XML conversion, and many more, depending on your exact situation.
How to convert object class into string
There are two problems with this line of code:
if($idx = strripos($ssh,','))
$ssh
is an instance of some class. You use it above as$ssh->exec(...)
. You should check the value it returns (probably a string) andstrripos()
on it, not on$ssh
.strripos()
returnsFALSE
if it cannot find the substring or a number (that can be0
) when it founds it. But in boolean context,0
is the same asfalse
. This means this code cannot tell apart the cases when the comma (,
) is found as the first character of the string or it is not found at all.
Assuming $ssh->exec()
returns the output of the remote command as string, the correct way to write this code is:
$output = $ssh->exec('tail -1 /var/log/playlog.csv');
$idx = strrpos($output, ','); //Get the last index of ',' substring
if ($idx !== FALSE) {
// The value after the last comma is the error code
$ErrorCode = substr($output, $idx + 1);
echo ' ', $Playlist, ReturnError($ErrorCode);
} else {
// Do something else when it doesn't contain a comma
}
There is no need to use strripos()
. It performs case-insensitive comparison but you are searching for a character that is not a letter, consequently the case-sensitivity doesn't make any sense for it.
You can use strrpos()
instead, it produces the same result and it's a little bit faster than strripos()
.
An alternative way
An alternative way to get the same outcome is to use explode()
to split $output
in pieces (separated by comma) and get the last piece (using end()
or array_pop()
) as the error code:
$output = $ssh->exec('tail -1 /var/log/playlog.csv');
$pieces = explode(',', $output);
if (count($pieces) > 1) {
$ErrorCode = (int)end($pieces);
echo ' ', $Playlist, ReturnError($ErrorCode);
} else {
// Do something else when it doesn't contain a comma
}
This is not necessarily a better way to do it. It is, however, more readable and more idiomatic to PHP (the code that uses strrpos()
and substr()
resembles more the C code).
How to convert object into string using PHP
Just get the column you need:
...
$hero_object = mysqli_fetch_object($result);
$hero_name = $hero_object->name;
return $hero_name;
Note that you should add error handling to your database calls to catch situations like empty record sets, etc.
Also note that if you are going to use the variable in a url and in html output, you should escape it correctly. For example in your function to return a value you can use in your url:
return urlencode($hero_name);
You don't need htmlspecialchars()
in this case as none of the special characters in html will remain un-encoded when you use urlencode()
.
Convert an Object to a String in PHP
Maybe serializing? It will take an object/array and convert it to a string (which can then be un-serialized back later)
Convert PHP object to string
First of all you should understand diffrence between object and string
$imageVar = $entry->field('logo')->generate();
$path = $imageVar;
here $imageVar is become object not string so you change first bez
your function $file = basename($path, ".svg"); is require string not object
if you are doing this in php then use (string) befour the $imageVar now your code will be
$imageVar = $entry->field('logo')->generate();
$path = (string)$imageVar;
try
Convert an array into string or object
I managed to reproduce your "Array to string conversion" error when using the implode
command by running the following line of code:
implode(";", [[]]); // PHP Notice: Array to string conversion in php shell code on line 1
For converting a nested array into a string I found that a foreach
loop worked:
$nestedArray = ['outerKeyOne' => ['innerKeyOne' => 'valueOne'], 'outerKeyTwo' => ['innerKeyTwo' => 'valueTwo']];
$arrayOfStrings = [];
foreach ($nestedArray as $key => $value) {
$arrayOfStrings[] = implode(",", $value);
}
implode(";", $arrayOfStrings); // string(17) "valueOne;valueTwo"
The second error associated with the line $val = (object) $list;
is from trying to embed an object into the $sql
string. It seems like an object is not what you want here, unless it is an object that has a __toString()
method implemented.
I hope this is of some help. Using var_dump
or something similar would provide more debug output to better diagnose the problems along with the above error messages. That's how I came up with the above code.
PHP converting object to string
As said above, you can serialize(), but to answer your question:
How do I put the print_r() into the reviewLater.txt?
If you set the second parameter of print_r()
to true, there will be a string of the output and you can manipulate it as such :)
Array Object to string conversion using PHP( Laravel )
You can use Laravel collection reduce method to get the string output
$output = rtrim(
collect($data)->reduce(fn($carry, $item) => $carry . "{$item['name']},"), ','
);
OR
$output = implode(',', collect($data)->map(fn($item) => $item['name'])->all());
Related Topics
Codeigniter Assets Folder Best Practice
How to Detect If Have to Apply Utf-8 Decode or Encode on a String
PHP How to Create Multiple Sessions
PHP Call Class Function by String Name
Laravel 5.3 Withcount() Nested Relation
Laravel Cannot Delete or Update a Parent Row: a Foreign Key Constraint Fails
How to Make a Catch-All Route in Laravel
Magento - Redirect Customer from Observer Method
New MySQLi(): How to Intercept an 'Unable to Connect' Error
How to Use PHP in a JavaScript Function
PHP & MySQL: When Exactly to Use HTMLentities
Best Way to Internationalize Simple PHP Website
PHP Date Time Current Time Add Minutes
Using Array_Intersect on a Multi-Dimensional Array