如果您想了解将具有多个条目/值的stdClass对象转换为PHP的相关知识,那么本文是一篇不可错过的文章,我们将为您提供关于PHP/JSON–stdClass对象、PHP/JSON-stdClass对
如果您想了解将具有多个条目/值的stdClass对象转换为PHP的相关知识,那么本文是一篇不可错过的文章,我们将为您提供关于PHP / JSON – stdClass对象、PHP / JSON-stdClass对象、PHP Laravel错误:类stdClass的对象无法转换为字符串、PHP stdClass对象,使用Constants访问的有价值的信息。
本文目录一览:- 将具有多个条目/值的stdClass对象转换为PHP
- PHP / JSON – stdClass对象
- PHP / JSON-stdClass对象
- PHP Laravel错误:类stdClass的对象无法转换为字符串
- PHP stdClass对象,使用Constants访问
将具有多个条目/值的stdClass对象转换为PHP
您可以使用类似的内容:
$newArray = [];
foreach($pmpro_levels as $level) {
$newArray[] = get_object_vars($level);
}
或使用array_map:
$newArray = array_map(function ($level) {return get_object_vars($level);},$pmpro_levels);
如果要将数组转换为stdClass对象,则可以将其转换为object
,如下所示:
$myArray = [ 'title' => 'My title','description' => 'Some description' ];
$myObject = (object)$myArray;
PHP / JSON – stdClass对象
stdClass Object ( [2010091907] => stdClass Object ( [home] => stdClass Object ( [score] => stdClass Object ( [1] => 7 [2] => 17 [3] => 10 [4] => 7 [5] => 0 [T] => 41 ) [abbr] => ATL [to] => 2 )
这实际上是继续的 – 但是 – 我的问题是stdClass对象部分.我需要能够在for循环中调用它,然后遍历每个部分(home,score,abbr,to等).我该怎么办?
例:
<?PHP $foo = array('123456' => array('bar' => array('foo'=>1,'bar'=>2))); //as object var_dump($opt1 = json_decode(json_encode($foo))); echo $opt1->{'123456'}->bar->foo; foreach(get_object_vars($opt1->{'123456'}->bar) as $key => $value){ echo $key.':'.$value.PHP_EOL; } //as array var_dump($opt2 = json_decode(json_encode($foo),true)); echo $opt2['123456']['bar']['foo']; foreach($opt2['123456']['bar'] as $key => $value){ echo $key.':'.$value.PHP_EOL; } ?>
输出:
object(stdClass)#1 (1) { ["123456"]=> object(stdClass)#2 (1) { ["bar"]=> object(stdClass)#3 (2) { ["foo"]=> int(1) ["bar"]=> int(2) } } } 1 foo:1 bar:2 array(1) { [123456]=> array(1) { ["bar"]=> array(2) { ["foo"]=> int(1) ["bar"]=> int(2) } } } 1 foo:1 bar:2
PHP / JSON-stdClass对象
我对数组还很陌生。我需要一些帮助-我有一些JSON,并且已经通过一些PHP对其进行了运行,这些PHP基本上可以解析JSON并对其进行解码,如下所示:
stdClass Object( [2010091907] => stdClass Object ( [home] => stdClass Object ( [score] => stdClass Object ( [1] => 7 [2] => 17 [3] => 10 [4] => 7 [5] => 0 [T] => 41 ) [abbr] => ATL [to] => 2 )
实际上,这种情况一直持续发生-但是-我的问题是这一stdClassObject
部分。我需要能够在for循环中调用此函数,然后遍历每个部分(主页,得分,缩写,到等)。我将如何处理?
答案1
小编典典您可以使用get_object_vars()
来获取对象的属性的数组,或致电json_decode()
与json_decode($string,true);
获得的关联数组。
例:
<?php$foo = array(''123456'' => array(''bar'' => array(''foo''=>1,''bar''=>2)));//as objectvar_dump($opt1 = json_decode(json_encode($foo)));echo $opt1->{''123456''}->bar->foo;foreach(get_object_vars($opt1->{''123456''}->bar) as $key => $value){ echo $key.'':''.$value.PHP_EOL;}//as arrayvar_dump($opt2 = json_decode(json_encode($foo),true));echo $opt2[''123456''][''bar''][''foo''];foreach($opt2[''123456''][''bar''] as $key => $value){ echo $key.'':''.$value.PHP_EOL;}?>
输出:
object(stdClass)#1 (1) { ["123456"]=> object(stdClass)#2 (1) { ["bar"]=> object(stdClass)#3 (2) { ["foo"]=> int(1) ["bar"]=> int(2) } }}1foo:1bar:2array(1) { [123456]=> array(1) { ["bar"]=> array(2) { ["foo"]=> int(1) ["bar"]=> int(2) } }}1foo:1bar:2
PHP Laravel错误:类stdClass的对象无法转换为字符串
我正在为使用Laravel的应用程序开发功能,但遇到了我无法解决的奇怪错误.我将以下代码作为控制器的辅助函数,在添加对以下函数的调用之前,该函数运行良好:
protected function f($p){
$cIds = $cs->select('cs.id')->get();
$cs = DB::table('cs')
->select('cs.id')
->join('pucs', 'cs.id', '=', 'pucs.c_id')
->where('pucs.p_id', '=', (string)$p->id)
->whereIn('cs.id', $cIds)->lists('cs.id');
return $cs;
}
其中pucs具有cs的外键和称为p_id的列,我只想返回p_id = $p-> id的行. $p是先前查询的结果,而$p-> id是一个整数(我认为吗?).当我在网站上打开页面时,出现以下错误:
Missing argument 1 for Illuminate\Database\Query\Builder::lists()
是否有人对导致此问题的原因有任何见解?我最初的想法是$p-> id是一个int并导致了问题,因此我使用(string)运算符将其强制转换为字符串,并尝试使用strval($p-> id).我没主意了.
更新:使用pluck(‘cs.id’)会给出相同的错误.我以为问题可能是(string)$p-> id,但是当我注释掉-> where(‘pucs.p_id’,’=’,(string)$p-> id)时,我仍然得到同样的问题.作为参考,我在同一帮助文件中有非常相似的代码行:
$bIds = $bs->select('bs.id')->get();
$bs = DB::table('bs')
->whereIn('bs.id', $bIds)->lists('bs.id');
我很确定它以前可以工作,即使我在早期代码中遇到错误时也是如此,但是现在它也不起作用.
无论如何,我这样做的原因是因为我有这些笨拙的表已与其他表连接并合并,然后从中选择了一个cs.id(或bs.id)子集,我只想要结果原始表.另外,我得到一些奇怪的错误,因为MysqL显然在按ID排序联合表时遇到问题?
解决方法:
当使用lists()时,您需要传递想要其值的键的名称.通常,您将在此处调用get()而不是list(),但是如果您调用list(‘cs.id’),则应该获取匹配的cs.id的数组.
PHP stdClass对象,使用Constants访问
现在,如果我使用它来访问它
$myCar=$requestBody->Car;
$myCar中的值是“Alpha”.到现在为止还挺好.
我定义了一个常量,如“MyConstants.PHP”中定义的
define("ITEM1","Car");
所以,我试图使用Constant从$requestBody访问值.但我没有.代码在下面的“index.PHP”中列出
<?PHP include 'MyConstants.PHP'; //Works $key=constant("ITEM1"); $carStr=$requestBody->key; //Does not work $carStr2=$requestBody->constant("ITEM1"); ?>
解决方法
$requestBody->{ITEM1}
您可能还会考虑将json解码为数组:
$requestBody = json_decode($json,true); $requestBody[ITEM1];
关于将具有多个条目/值的stdClass对象转换为PHP的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于PHP / JSON – stdClass对象、PHP / JSON-stdClass对象、PHP Laravel错误:类stdClass的对象无法转换为字符串、PHP stdClass对象,使用Constants访问等相关内容,可以在本站寻找。
本文标签: