foreach循环找不到json对象的值并显示在php页面上
我在data/clients.json文件中获得了一些数据,我正在尝试获取一些键和值,并将它们显示在我的php文件中。它不起作用,我也不明白为什么 My clients.json文件如下所示:foreach循环找不到json对象的值并显示在php页面上,php,json,foreach,Php,Json,Foreach,我在data/clients.json文件中获得了一些数据,我正在尝试获取一些键和值,并将它们显示在我的php文件中。它不起作用,我也不明白为什么 My clients.json文件如下所示: { "data": { "nikajakubec": { "name": "nika", "loans": { "amount": "1000", "reason": "
{
"data": {
"nikajakubec": {
"name": "nika",
"loans": {
"amount": "1000",
"reason": "for garden"
}
}
}
}
和我的PHP文件:
<?php
$sData = file_get_contents('data/clients.json');
$jData = json_decode($sData);
$jClient = $jData->data->$sUsername;
foreach ($jClient->loans as $jLoans) {
echo "
<div>
<div>Amount:$jLoans->loans-></div>
<div>Reason:$sUserName->reason</div>
</div>";
}
?>
这样做:-
<?php
$json = '{
"data": {
"nikajakubec": {
"name": "nika",
"loans": {
"amount": "1000",
"reason": "for garden"
}
}
}
}';
$jData = json_decode($json);
foreach ($jData->data as $user) {
echo "
<div>
<div>Amount:". $user->loans->amount ."</div>
<div>Reason: ". $user->loans->reason ."</div>
</div>";
}
字段原因
实际上嵌套在贷款
属性中,而不是直接嵌套在用户中
所以不是
$sUserName->reason
走吧
$jLoans->reason
也可以使用$jLoans->amount
代替$jLoans->loans->
考虑一下,当您循环使用$jClient->loans
时,您将处理loans
的每个道具,即“金额”和“原因”您是否可以检查该JSON文件,如果您添加echo JSON_last_error()
和JSON_last_error_msg(),该文件看起来不是有效的JSON文件
根据您的描述,您可能会获得有关错误的帮助,这可能不是主要问题,但我认为“原因”也应该是$jLoans->Reason
(而不是$sUserName
)非常感谢您,它现在可以工作了!!!我可以问一个简短的问题来了解它是如何工作的或者你很忙吗?非常感谢。好的,伙计们。现在一切都好了,非常感谢!但我就是不明白。。我的意思是,如果我试图找到每一个$sUserName(在本例中是nikajakubec)及其$jloan,为什么它要与foreach($jData->data as$jloan)一起工作。为什么它不能像$jData->data->sUserName那样使用$jLoans?谢谢在Reason中引号后面的点是什么意思:“.jLoans->loans->Reason.”是什么意思?在这之后我不会再打扰你了:D@PetraJakub第一个问题->因为它是一个多维数组,这就是为什么它不能与$jData->data->$sUserName
一起工作,因为$sUserName
在json数据中没有位置。2个问题:-
用于连接php变量和字符串。现在一切正常,非常感谢!但我就是不明白。。我的意思是,如果我试图找到每一个$sUserName(在本例中是nikajakubec)及其$jloan,为什么它要与foreach($jData->data as$jloan)一起工作。为什么它不能像$jData->data->sUserName那样使用$jLoans?谢谢foreach的foreach
接受一个参数,该参数可以是数组/对象等,并允许您在该“列表”的每个元素上循环。在循环过程中引用当前正在处理的项可能很困难,因此它允许您使用as
定义别名,以定义如何调用当前项。因此,如果您编写类似于foreach($jData->data->data->$sUserName作为$jLoans)
的东西,您将循环使用$sUserName
元素的所有道具,它们是数量
和原因
。您将像这样访问它们:$jLoans->amount
,$jLoans->reason
N.B.$jLoans
与另一个变量一样只是一个变量名,它不是“严格的”。您还可以编写foreach($jData->data->sUserName as$goofy)
,然后调用$goofy->amount
。重要的是你正在骑的自行车和当前项目的道具/项目。如果仍然不清楚,请阅读更多关于循环的文档