我有一个从json_decode创建的stdClass对象,当我运行count($ obj)函数时,它不会返回正确的数字.该对象有30个属性,但count()函数的返回值为1.
有任何想法吗?
以下是其中一个对象的示例.(我正在从Twitter请求每日趋势信息).如果此对象具有多个属性,则count($ obj)将等于1.
[trends] => stdClass Object
(
[2009-08-21 11:05] => Array
(
[0] => stdClass Object
(
[query] => "Follow Friday"
[name] => Follow Friday
)
[1] => stdClass Object
(
[query] => "Inglourious Basterds" OR "Inglorious Basterds"
[name] => Inglourious Basterds
)
[2] => stdClass Object
(
[query] => Inglourious
[name] => Inglourious
)
[3] => stdClass Object
(
[query] => #songsincode
[name] => #songsincode
)
[4] => stdClass Object
(
[query] => #shoutout
[name] => …Run Code Online (Sandbox Code Playgroud) 我做了以下数组:
$clasa = array(
'e1' => array('nume' => 'Nitu', 'prenume' => 'Andrei', 'sex' => 'm', 'varsta' => 23),
'e2' => array('nume' => 'Nae', 'prenume' => 'Ionel', 'sex' => 'm', 'varsta' => 27),
'e3' => array('nume' => 'Noman', 'prenume' => 'Alice', 'sex' => 'f', 'varsta' => 22),
'e4' => array('nume' => 'Geangos', 'prenume' => 'Bogdan', 'sex' => 'm', 'varsta' => 23),
'e5' => array('nume' => 'Vasile', 'prenume' => 'Mihai', 'sex' => 'm', 'varsta' => 25)
);
Run Code Online (Sandbox Code Playgroud)
我想知道如何使用stdClass()将这个数组转换为一个对象,我是一个PHP初学者,一个简单的例子会非常有帮助,我试过寻找类似的问题,但答案很复杂,超越了我对基本类和对象的理解.
我正在使用第三方存储系统,它只返回我的stdClass对象,无论我输入什么因为一些不明原因.所以我很想知道是否有办法将stdClass对象转换/转换为给定类型的完整对象.
例如,有些东西:
//$stdClass is an stdClass instance
$converted = (BusinessClass) $stdClass;
Run Code Online (Sandbox Code Playgroud)
我只是将stdClass转换为数组并将其提供给BusinessClass构造函数,但也许有一种方法可以恢复我不知道的初始类.
注意:我对"更改您的存储系统"类型的答案不感兴趣,因为它不是您感兴趣的点.请将其视为关于语言能力的学术问题.
干杯
在工作中大量重构的过程中,我希望引入stdClass*****作为从函数返回数据的方法,并且我试图找到支持我的决定的非主观参数.
是否有任何情况何时最好使用一个而不是另一个?
使用stdClass而不是数组会有什么好处?
有些人会说函数必须尽可能少且具体,才能返回单个值.我决定使用stdClass是暂时的,因为我希望从长远来看为每个进程找到正确的Value Objects.
print_r()在我的阵列上做我得到以下内容:
Array (
[0] =>
stdClass Object
(
[id] => 25
[time] => 2014-01-16 16:35:17
[fname] => 4
[text] => 5
[url] => 6
)
)
Run Code Online (Sandbox Code Playgroud)
如何访问数组中的特定值?由于stdClass对象,以下代码不起作用
echo $array['id'];
Run Code Online (Sandbox Code Playgroud) 我想在单个语句中设置stdClass对象的属性.我对此一无所知.我知道以下事情
$obj = new stdClass;
$obj->attr = 'loremipsum';
Run Code Online (Sandbox Code Playgroud)
它需要两个陈述.
$obj = (object) array('attr'=>'loremipsum');
Run Code Online (Sandbox Code Playgroud)
它需要单个语句,但它不是直接方法.
$obj = new stdClass(array('attr'=>'loremipsum'));
Run Code Online (Sandbox Code Playgroud)
它不起作用.
有没有办法在PHP中将多维转换array为stdClass对象?
铸造(object)似乎不会递归地工作. json_decode(json_encode($array))产生我正在寻找的结果,但必须有更好的方法......
我有一个对象数组.一个print_r输出如下:
Array
(
[0] => stdClass Object
(
[sm_id] => 1
[c_id] => 1
)
[1] => stdClass Object
(
[sm_id] => 1
[c_id] => 2
)
)
Run Code Online (Sandbox Code Playgroud)
我真的很难找到循环结果并访问对象元素的方法.如果有人能给我任何指示,我将非常感激.
提前致谢
我目前遇到PHP问题,我收到此错误,
Object of class stdClass could not be converted to string 当我在我的网站中运行这部分代码时发生错误,
function myaccount() {
$data['user_data'] = $this->auth->get_userdata($this->uri->segment(3));
//var_dump($data['user_data']);
$this->load->model('users_model');
$data['user_info'] = $this->users_model->get_user_and_roadmaps_by_id($this->uri->segment(3));
$this->template->build('users/my_account', $data);
}
Run Code Online (Sandbox Code Playgroud)
发生错误的行是这一行,
$data['user_data'] = $this->auth->get_userdata($this->uri->segment(3));
Run Code Online (Sandbox Code Playgroud)
而这一行正在调用这个函数,
function get_userdata() {
$CI =& get_instance();
if(!$this->logged_in()) {
return false;
} else {
$query = $CI->db->get_where('users', array('user_id' => $CI->session->userdata('user_id')));
return $query->row();
}
}
Run Code Online (Sandbox Code Playgroud)
我现在不知道这个问题是什么,所以任何帮助都会很棒.