使用新数组我这样做:
$aVal = array();
$aVal[key1][var1] = "something";
$aVal[key1][var2] = "something else";
Run Code Online (Sandbox Code Playgroud)
对象是否有类似的语法
(object)$oVal = "";
$oVal->key1->var1 = "something";
$oVal->key1->var2 = "something else";
Run Code Online (Sandbox Code Playgroud) 这是一个一般参考问题和答案,涵盖了许多永无止境的"如何访问我的JSON中的数据?" 的问题.它可以处理在PHP中解码JSON和访问结果的广泛基础知识.
我有JSON:
{
"type": "donut",
"name": "Cake",
"toppings": [
{ "id": "5002", "type": "Glazed" },
{ "id": "5006", "type": "Chocolate with Sprinkles" },
{ "id": "5004", "type": "Maple" }
]
}
Run Code Online (Sandbox Code Playgroud)
如何在PHP中解码并访问结果数据?
我们知道,在JavaScript中创建匿名对象很容易,如下面的代码:
var object = {
p : "value",
p1 : [ "john", "johnny" ]
};
alert(object.p1[1]);
Run Code Online (Sandbox Code Playgroud)
输出:
an alert is raised with value "johnny"
Run Code Online (Sandbox Code Playgroud)
在PHP的情况下可以应用相同的技术吗?我们可以在PHP中创建匿名对象吗?
我有以下数组,当我这样做时print_r(array_values($get_user));,我得到:
Array (
[0] => 10499478683521864
[1] => 07/22/1983
[2] => email@saya.com
[3] => Alan [4] => male
[5] => Malmsteen
[6] => https://www.facebook.com app_scoped_user_id/1049213468352864/
[7] => stdClass Object (
[id] => 102173722491792
[name] => Jakarta, Indonesia
)
[8] => id_ID
[9] => El-nino
[10] => Alan El-nino Malmsteen
[11] => 7
[12] => 2015-05-28T04:09:50+0000
[13] => 1
)
Run Code Online (Sandbox Code Playgroud)
我尝试按如下方式访问数组:
echo $get_user[0];
Run Code Online (Sandbox Code Playgroud)
但这显示了我:
未定义0
注意:
我从Facebook SDK 4获得这个数组,所以我不知道原来的阵列结构.
我怎样才能email@saya.com从数组中获取值作为示例?
我正在尝试将JSON数据中的属性解码为PHP对象.这只是一个YouTube数据API请求,它返回一个内容对象喜欢的视频对象;
[content] => stdClass Object
(
[5] => https://www.youtube.com/v/r4ihwfQipfo?version=3&f=videos&app=youtube_gdata
[1] => rtsp://v4.cache7.c.youtube.com/CiILENy73wIaGQn6pSL0waGIrxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp
[6] => rtsp://v6.cache3.c.youtube.com/CiILENy73wIaGQn6pSL0waGIrxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp
)
Run Code Online (Sandbox Code Playgroud)
干
$object->content->5
Run Code Online (Sandbox Code Playgroud)
引发"意想不到的T_DNUMBER" - 这非常有意义.但是如何获得一个数字属性的值?
我相信我应该知道这一点.提前致谢.
我有一个PHP数组,其数字键作为字符串类型.
但是当我尝试访问它们时,PHP会给我一个未定义的索引错误.
$a = (array)json_decode('{"1":1,"2":2}');
var_dump($a);
var_dump(isset($a[1]));
var_dump(isset($a["1"]));
var_dump($a[1]);
var_dump($a["1"]);
Run Code Online (Sandbox Code Playgroud)
输出:
array (size=2)
'1' => int 1
'2' => int 2
boolean false
boolean false
ERROR: E_NOTICE: Undefined offset: 1
null
ERROR: E_NOTICE: Undefined offset: 1
null
我如何访问这些值?
如果我有一个包含以%符号开头的属性的对象,我该如何获取其值.
如果我使用
echo $myobject->%myproperty;
Run Code Online (Sandbox Code Playgroud)
我收到一个错误
Parse error: syntax error, unexpected '%', expecting T_STRING or T_VARIABLE
Run Code Online (Sandbox Code Playgroud)
我知道我不应该在变量名中使用%,但这不是我的行为而且我坚持使用它.
我正在研究一个现有的代码库并找回一个带有一个以数字开头的属性的对象,如果我调用print_r该对象,我可以看到它.
让我们说吧$Beeblebrox->2ndhead.当我尝试这样访问它时,我收到一个错误:
解析错误:语法错误,意外T_LNUMBER,期待T_STRING或T_VARIABLE或'{'或'$'
我怎样才能获得该属性?
我创建了一个数字为22的表作为列名.如何访问此列?
内容:
我试过了
$obj = Tablename::find(1)->first();
$obj->22;
$obj->'22'; //'syntax error, unexpected ''22''
$obj->"22";
$obj->`22`;
$obj[22];
$arr = $obj->toArray();
var_dump($arr); // array(15) { ["id"]=> string(2) "25" ["out_trade_no"]=> string(14) "14847080930025" ["22"]=> string(0) "2"
$arr[22]; // 'ErrorException' with message 'Undefined offset: 22'
$arr['22']; // 'ErrorException' with message 'Undefined offset: 22'
$arr["22"]; // 'ErrorException' with message 'Undefined offset: 22'
$arr[`22`]; // 'ErrorException' with message 'Undefined index: ' in
$arr[{'22'}]; // 'syntax error, unexpected '{', expecting ']'' in
Run Code Online (Sandbox Code Playgroud)
没有用.
编辑为实现的答案:也得到null.
var_dump($orders[0]);
var_dump($orders[0]->id);
var_dump($orders[0]->{'22'});
$col = …Run Code Online (Sandbox Code Playgroud) 我从PHP手册中读到了这个:
如果将对象转换为数组,则结果是一个数组,其元素是对象的属性.键是成员变量名,有一些值得注意的例外:整数属性是不可访问的 ; 私有变量的类名前置于变量名; 受保护的变量在变量名前面加上'*'.这些前置值在任一侧都有空字节. 这可能会导致一些意外行为:
Run Code Online (Sandbox Code Playgroud)class A { private $A; // This will become '\0A\0A' } class B extends A { private $A; // This will become '\0B\0A' public $AA; // This will become 'AA' } var_dump((array) new B());上面看起来有两个名为'AA'的键,虽然其中一个 实际命名为'\ 0A\0A'.
我不太明白与像字样那些部分的含义此.
什么是整数属性?
"这些前置值在两侧都有空字节.这可能会导致一些意外行为"的含义是什么?
"上面的内容似乎有两个名为'AA'的键,虽然其中一个实际命名为'\ 0A\0A'"