如何将 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 类的对象无法转换为字符串