我有一个关于制作2D JSON字符串的问题
现在我想知道为什么我无法访问以下内容:
$json_str = '{"urls":["http://example.com/001.jpg","http://example.com/003.jpg","http://example.com/002.jpg"],"alts":["testing int chars àèéìòóù stop","second description",""],"favs":["true", "false", "false"]}';
$j_string_decoded = json_decode($json_str);
// echo print_r($j_string_decoded); // OK
// test get url from second item
echo j_string_decoded['urls'][1];
// Fatal error: Cannot use object of type stdClass as array
Run Code Online (Sandbox Code Playgroud) 我有一些我解码的json对象,其中一个属性以"@"开头,我无法使用php访问该元素,因为它会抛出错误.
[offers] => stdClass Object
(
[@attributes] => stdClass Object
(
[id] => levaka0B8a
)
)
Run Code Online (Sandbox Code Playgroud)
我将如何访问属性?
stdClass Object
(
[ModuleAccountInfo] => Array
(
[0] => stdClass Object
(
[ServerName] => EAST
[HostingModule] => ActiveDirectory
[ActiveDirectorySiteName] => EAST
[AccountIdentity] => OU=ndla,OU=Hosting,DC=east,DC=domain,DC=local
[Groups] => 2
[Users] => 15
)
[1] => stdClass Object
(
[ServerName] => EAST.net
[HostingModule] => hange
[DiskQuota] => 375000
[DiskQuotaAdditional] => 0
[DateQuotaExceeded] => 0001-01-01T00:00:00
[DiskSpace] => 58567
[MailboxesDiskSpace] => 59973051
[PublicFoldersDiskSpace] => 0
[MessageArchivingDiskSpace] => 0
[Contacts] => 8
[Mailboxes] => 15
Run Code Online (Sandbox Code Playgroud)
如何访问ServerName属性?该对象保存在$ modules变量中.以上是$ modules的print_r.
任何人都可以解释为什么我可以让这个工作.
我想查询一个数组,看看USER->id当前登录的是否分配了一个特定的角色:
$contextroles = get_records_sql("SELECT userid FROM {$CFG->prefix}role_assignments WHERE contextid = 23 AND roleid = 3");
function object2array($object) {
if (is_object($object)) {
foreach ($object as $key => $value) {
$array[$key] = $value;
}
}
else {
$array = $object;
}
return $array;
}
$alloweduser = object2array($contextroles);
if (in_array($USER->id, $alloweduser)) {
echo'Your in<br />';
echo $USER->id.'<br />';
print_r($alloweduser);
}
else{
echo'<br />You do not have permission to acces this database.<br />';
echo $USER->id.'<br />';
print_r($alloweduser);
exit;
}
Run Code Online (Sandbox Code Playgroud)
我目前得到这个输出:
您无权访问此数据库. …
我想打印[name]的值.我只是熟悉标准定义的类以及如何调用它们.
基于这个例子和逻辑
$arrayobj = new ArrayObject(array('first','second','third'));
print_r($arrayobj);
//outputs: ArrayObject Object ( [0] => first [1] => second [2] => third )
Run Code Online (Sandbox Code Playgroud)
接着就,随即.我试图从这里提取名称(Pebbles)的值.
print_r($terms);
/* outputs
Array ( [3] => stdClass Object ( [term_id] => 3 [name] => Pebbles ) )
*/
Run Code Online (Sandbox Code Playgroud)
所以我试过了
echo $terms[0]->name;
Run Code Online (Sandbox Code Playgroud)
有花生.我该怎么做呢?
我正在反对一个API,它给我一个stdClass对象,看起来像这样(实际数据被替换)
"data": [
{
"type": "image",
"comments": {
"data": [
{
"created_time": "1346054211",
"text": "Omg haha that's a lot of squats",
"from": {},
"id": "267044541287419185"
},
{
"created_time": "1346054328",
"text": "Fit body",
"from": {},
"id": "267045517536841021"
},
]
},
"created_time": "1346049912",
},
Run Code Online (Sandbox Code Playgroud)
如何创建像"注释"这样的stdClass对象,它具有多个具有相同名称但数据不同的子字段.当我尝试创建一个看起来像这样的stdClass时,我的Comments部分将只包含1个输入,这是while循环中的最后一个输入.因此,不是应用于底部,而是用新的数据替换旧数据.如何解决这个问题?
建议在哪里使用其中一个?我想存储db中列出的文章中的数据.
这是一个简单的问题:
echo $Datastore->name; //I like it works with foreach
//vs
echo $Datastore['name'];
Run Code Online (Sandbox Code Playgroud)
哪个最好?获取元素的速度stdClass和array速度有什么区别吗?
是不是可以在PHP中这样做?
Javascript代码:
var a = {name: "john", age: 13}; //a.name = "john"; a.age = 13
Run Code Online (Sandbox Code Playgroud)
动态实例化stdClass变量?
这是我第一次发帖,如果我不是很清楚,请原谅我.我还将通过说明我对PHP和Web服务知之甚少来作为序言.
我遇到的问题是:
SOAP请求由外部源(客户端)生成,然后发送到我的php SOAP服务器.当服务器收到请求时,它根本就不正确.数据包嗅探器显示请求在到达运行php服务器的计算机时看起来正确.但是,出于某种原因,只要soap服务器收到请求,它就会搞砸了.
真正奇怪的是,仅在一周前,这段代码运行良好.自那时以来没有任何变化.这已在3台不同的机器上尝试过,其中一台机器运行不同版本的php(并处于不同的状态!).其中一台机器在经过一些成功的测试后不久就关闭了,然后在这个问题出现之后立即打开了.
以下是客户端发送的请求示例:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<CoverageRequest xmlns="http://www.iicmva.com/CoverageVerification/">
<RequestorInformation>
<Organization>
<Name>NVDMV</Name>
</Organization>
<ReasonDetails>
<ReasonCode>BI</ReasonCode>
<TrackingNumber>NVDMV-2011-05-12 10:36:52:286678</TrackingNumber>
</ReasonDetails>
</RequestorInformation>
<Detail>
<PolicyInformation>
<OrganizationDetails>
<NAIC>26654</NAIC>
</OrganizationDetails>
<PolicyDetails>
<VerificationDate>2011-05 12T00:00:00</VerificationDate>
<UniqueKey>1234567890123456789</UniqueKey>
<PolicyState>NV</PolicyState>
</PolicyDetails>
</PolicyInformation>
<InsuredInformation>
<PrimaryNameInformation>
<ParsedName>
<GivenName>FIRSTNAME</GivenName>
<Surname>LASTNAME</Surname>
</ParsedName>
<Name>LASTNAME,FIRSTNAME</Name>
<DriversLicense>NOLICENSE</DriversLicense>
<FEIN>FEIN</FEIN>
</PrimaryNameInformation>
<Address>
<StreetAddress>12345</StreetAddress>
</Address>
</InsuredInformation>
<VehicleInformation>
<VehicleDetails>
<VIN>VIN1234567</VIN>
<Make>MAKE</Make>
<Model>MODEL</Model>
<Year>2000</Year>
</VehicleDetails>
</VehicleInformation>
</Detail>
</CoverageRequest>
</soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)
以下是soap服务器获取的示例:
<?xml version="1.0" encoding="UTF-8"?><CoverageRequest><stdClass>
<Individual>
<ParsedName>
<Prefix />
<GivenName />
<MiddleName />
<Surname />
<Suffix /> …Run Code Online (Sandbox Code Playgroud) 这是我的代码:
<?php
$madeUpObject = new \stdClass();
$madeUpObject->madeUpProperty = "abc";
echo $madeUpObject->madeUpProperty;
echo "<br />";
if (property_exists('stdClass', 'madeUpProperty')) {
echo "exists";
} else {
echo "does not exist";
}
?>
Run Code Online (Sandbox Code Playgroud)
输出是:
abc不存在
那为什么这不起作用?