我有一个看起来像这样的对象:
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) 可能重复:
如何使用整数等名称访问对象属性?
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) 我有一个这样的stdClass对象:
print_r($myobj);
stdClass Object(
[0] => testData
);
Run Code Online (Sandbox Code Playgroud)
因此很明显,我无法通过来获取值$myobj->0。
为了获得此值,我将对象转换为数组,但是有没有不转换的方法?
为什么PHP不在第7行抛出错误?
<?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)
我一直认为,课堂领域不能以数字开头.但如果数字在一个变量中,那似乎并非如此.
有没有一种从这里转换对象数组的简单方法
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) 我在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功能还是特殊语法?我做了一个快速搜索,但没有任何结果,我可以看到. …