相关疑难解决方法(0)

使用Key作为数字PHP访问对象

我有一个看起来像这样的对象:

stdClass Object
(
    [page] => stdClass Object
        (
            [1] => stdClass Object
                (
                    [element] => stdClass Object
                        (
                            [background_color] => stdClass Object
...
Run Code Online (Sandbox Code Playgroud)

当我打印时print_r($arr->page):

stdClass Object
(
    [1] => stdClass Object
        (
            [element] => stdClass Object
                (
                    [background_color] => stdClass Object
                        (
Run Code Online (Sandbox Code Playgroud)

但这没有任何印刷品:

print_r($arr->page->{"1"});
Run Code Online (Sandbox Code Playgroud)

这会输出错误:

print_r($arr->page->1); 
Run Code Online (Sandbox Code Playgroud)

解析错误:语法错误,意外T_LNUMBER,期待T_STRING或T_VARIABLE或'{'或'$'i

如何访问"1"元素?

更新:

我也试着$arr->page[1]和$arr->page["1"],但得到这个错误:

致命错误:不能使用stdClass类型的对象作为数组

更新2:

var_dump($arr->page);
Run Code Online (Sandbox Code Playgroud)

打印这个:

 object(stdClass)#3 (1) {   [1]=>   
   object(stdClass)#4 (1) {
     ["element"]=>
     object(stdClass)#5 (20) {
       ["background_color"]=>
       object(stdClass)#6 (7) {
Run Code Online (Sandbox Code Playgroud)

php oop object

6
推荐指数
2
解决办法
5073
查看次数

如何访问php大括号对象属性

可能重复:
如何使用整数等名称访问对象属性?

print_r($myObj) 给出以下结果:

stdClass Object
(
    [4021450] => stdClass Object
    (
        [property1] => ooo
        [property2] => xxx
    )
    [3971601] => stdClass Object
    (
        [property1] => 123
        [property2] => 356
    )
)
Run Code Online (Sandbox Code Playgroud)

如何使用大括号语法和变量来访问sub-object?

我试过了:

$myObj->'3971601';                     // Parse error: syntax error  
$myObj->{'3971601'};                   // Works  
$id = 3971601; $myObj->{$id};          // Notice: Trying to get property of non-object  
$id = 3971601; $myObj->{''.$id};       // Notice: Trying to get property of non-object  
$arr = (array)$myObj; $arr[3971601];   // Notice: Undefined offset: 3971601
$arr = …
Run Code Online (Sandbox Code Playgroud)

php properties object curly-braces curly-brackets

5
推荐指数
0
解决办法
2087
查看次数

PHP stdClass对象,如何获取索引为0的元素

我有一个这样的stdClass对象:

print_r($myobj);

stdClass Object(
[0] => testData
);
Run Code Online (Sandbox Code Playgroud)

因此很明显,我无法通过来获取值$myobj->0。

为了获得此值,我将对象转换为数组,但是有没有不转换的方法?

php stdclass

5
推荐指数
1
解决办法
2654
查看次数

为什么在PHP中允许这样做?

为什么PHP不在第7行抛出错误?

https://ideone.com/DHMLCY

<?php

class Test {
    public function __construct(){

        $name = 123;
        $this->$name = 'Test';
        var_dump($this->$name);


        $this->123 = 'Test2';
        var_dump($this->123);

    }
}

$test = new Test();
var_dump($test);
Run Code Online (Sandbox Code Playgroud)

我一直认为,课堂领域不能以数字开头.但如果数字在一个变量中,那似乎并非如此.

php

4
推荐指数
1
解决办法
102
查看次数

如何将php对象数组从一种形式转换为另一种形式

有没有一种从这里转换对象数组的简单方法

stdClass Object
(
    [Title] => Array
        (
            [0] => Title 1
            [1] => Title 2
            [2] => Title 3
            [3] => Title 4
        )

    [description] => Array
        (
            [0] => Description 1
            [1] => Description 2
            [2] => Description 3
            [3] => Description 4
        )

    [myimage] => Array
        (
            [0] => images/events/568a7048f22f9/sizes/athens-img_XS.jpg
            [1] => images/collections/56b2294894c08/islamiki.png
            [2] => images/multimedia/item6.jpg
            [3] => 
        )

)
Run Code Online (Sandbox Code Playgroud)

对此:

stdClass Object
(

    [0] => Array
        (
            [Title] => Title 1
            [description] => Description 1
            [myimage] …
Run Code Online (Sandbox Code Playgroud)

php

3
推荐指数
1
解决办法
124
查看次数

在Laravel 5中,这是做什么的:$ this - > {$ var}

我在api端点中有以下代码,它检查要删除的模型上没有关系(并返回true以显示它正在使用中):

CONTROLLER

public function destroy(Group $group)
    {
        if ($group->inUse()) {
            return response(
                ['message' => 'This group cannot be deleted because it has either associated 
                catalogue items, users or organisations'],
                409
            );
        }

        $group->delete();
    }
Run Code Online (Sandbox Code Playgroud)

模型

public function inUse()
{
    $models = [
        'categories',
        'items',
        'organisations',
    ];

    foreach ($models as $model) {
        if (count($this->{$model}) > 0 ){
            return true;
        }
    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)

我不完全理解的是我们检查每个模型的关系数量的地方: count($this->{$model})

我在php.net上读到 $ this - > {$ var}是一个变量变量,但这不是这里的情况,循环的第一次运行会返回一个未定义的变量$ categories:

if($this->$categories) {
    //
}
Run Code Online (Sandbox Code Playgroud)

这是一个laravel功能还是特殊语法?我做了一个快速搜索,但没有任何结果,我可以看到. …

php laravel

0
推荐指数
1
解决办法
191
查看次数