如何将 stdClass 对象打印为字符串?

Posted

技术标签:

【中文标题】如何将 stdClass 对象打印为字符串?【英文标题】:How can I print an stdClass object as a string? 【发布时间】:2018-10-10 04:08:17 【问题描述】:

当我尝试使用 print_r 命令打印数组时出现以下错误 解析错误:syntax error, unexpected '$array' (T_VARIABLE) in /home4/rajatwalia/student.rwalia.com/wp-content/plugins/insert-php/includes/shortcodes.php(66) : eval()'d code on line 6

这是在 wordpress 的 php 短代码插件中编写的代码

global $wpdb;
$profile_id = um_profile_id();
$result = $wpdb->get_results( "SELECT meta_value FROM wp_usermeta WHERE 
meta_key = 'student_id' AND user_id = $profile_id;" );
$array = json_decode(json_encode($result),true);
//$array[0] -> $studentid;  
print_r $array;
//print_r($result);

我使用的是 json,否则我的结果是一个 stdClass,我想要一个字符串

【问题讨论】:

json_decode(json_encode()) 的意义何在?如果要将stdclass 转换为数组,只需将其强制转换,即$array = (array) $result;。无论如何,print_r 是一个函数,并且必须像一个函数一样调用,即print_r($array) 您也可以使用$wpdb->get_results("SELECT...", 'ARRAY_A') 专门请求一个数组。见developer.wordpress.org/reference/classes/wpdb/get_results @Phil 现在我得到一个包含一个条目的 stdclass 对象数组 Array ( [0] => stdClass Object ( [meta_value] => 2330002 ) ) ,现在有没有办法将此对象转换为字符串? 你的意思是像foreach($result as $obj) echo $obj->meta_value;?如果是这样,是吗? @Phil,是的!我想将该值 2330002 作为字符串存储在新变量中,而不仅仅是 echo 【参考方案1】:

print_r 是一个函数,应该这样调用:

print_r($array);

您可以使用函数序列化将类转换为字符串。

print_r(serialize($array));

或者,如果您只想获取数组的值,可以使用函数 implode:

print_r(implode(', ', $array));

此函数会将数组的值转换为以逗号分隔的字符串。 implode 的第一个参数是分隔符,第二个参数是要被字符串转换的数组。

如果你想同时拥有数组的名称和值。你可以这样做:

//variable that will storage the string
$string = "";

/** this loop will run all the array, the $key variable will storage the name of 
 *the array position(the key), the $value variable will storage the value of the 
 *array in that position
 */
foreach ($array as $key => $value) 
    $string .= $key . ": " . $value . ", ";


print_r($string);

【讨论】:

以上是关于如何将 stdClass 对象打印为字符串?的主要内容,如果未能解决你的问题,请参考以下文章

WordPress:可捕获的致命错误:stdClass 类的对象无法转换为字符串

类 stdClass 的对象无法转换为字符串错误

类 stdClass 的对象无法转换为字符串

类 stdClass 的对象的问题无法转换为字符串

SQL 错误可捕获的致命错误:stdClass 类的对象无法转换为字符串

报错:使用 maatwebsite 导出到 excel 时,stdClass 类的对象无法转换为字符串