GVKun编程网logo

将具有多个条目/值的stdClass对象转换为PHP

13

如果您想了解将具有多个条目/值的stdClass对象转换为PHP的相关知识,那么本文是一篇不可错过的文章,我们将为您提供关于PHP/JSON–stdClass对象、PHP/JSON-stdClass对

如果您想了解将具有多个条目/值的stdClass对象转换为PHP的相关知识,那么本文是一篇不可错过的文章,我们将为您提供关于PHP / JSON – stdClass对象、PHP / JSON-stdClass对象、PHP Laravel错误:类stdClass的对象无法转换为字符串、PHP stdClass对象,使用Constants访问的有价值的信息。

本文目录一览:

将具有多个条目/值的stdClass对象转换为PHP

将具有多个条目/值的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对象

PHP / JSON – stdClass对象

我还不清楚数组.我需要一些帮助 – 我有一些 JSON,我已经通过一些基本上解析JSON并且解码它的 PHP来运行它,如下所示:
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等).我该怎么办?

您可以使用get_object_vars()获取对象属性的数组,或者使用json_decode($string,true)调用json_decode();获取关联数组.

例:

<?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对象

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

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访问

PHP stdClass对象,使用Constants访问

响应以 JSON格式接收,$requestBody保存json响应.该类的类型是stdclass.

现在,如果我使用它来访问它

$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访问等相关内容,可以在本站寻找。

本文标签: