繁体   English   中英

选择特定的JSON数据并对其进行排序

[英]Select specific JSON data and sort it

我正在学习使用PHP通过JSON响应进行操作。 而且我想知道如何仅选择特定的数据数组取决于其他数据字段中的值。 到目前为止,我取得了以下进展:

$result = json_decode(do_post_request("https://domain/my_api_key/", $postdata, true));` 

echo '<pre>';

print_r($result);

给我:

      stdClass Object ( [response] => stdClass Object ( [count] => 991 [msisdn] => Array ( [0] => stdClass Object ( [msisdn] => 420607659770 [GsmSubscription] => isActive 
[waiting_for_response] => [imsi] => 230031030037243 [iccid] => 8942031013792372436 ) [1] => stdClass Object ( [msisdn] => 420731037691 [GsmSubscription] => isActive 
[waiting_for_response] => [imsi] => 230031030037242 [iccid] => 8942031013792372428 ) [2] => stdClass Object ( [msisdn] => 420732763471 [GsmSubscription] => isActive 
[waiting_for_response] => [imsi] => 230031030037241 [iccid] => 8942031013792372410 ) [3] => stdClass Object ( [msisdn] => 420732788951 [GsmSubscription] => isActive 
[waiting_for_response] => [imsi] => 230031030037244 [iccid] => 8942031013792372444 ) [4] => stdClass Object ( [msisdn] => 420735041563 [GsmSubscription] => isActive 
[waiting_for_response] => [imsi] => 230031030037200 [iccid] => 8942031013792372006 ) [5] => stdClass Object ( [msisdn] => 420778890012 [GsmSubscription] => isActive 
[waiting_for_response] => [imsi] => 230031030010134 [iccid] => 8942031013392101342 ) [6] => stdClass Object ( [msisdn] => 420778890078 [GsmSubscription] => Suspend 
[waiting_for_response] => [imsi] => 230031030010244 [iccid] => 8942031013392102449 ) [7] => stdClass Object ( [msisdn] => 420778899001 [GsmSubscription] => Preactivate 
[waiting_for_response] => [imsi] => 230031030037210 [iccid] => 8942031013792372105 ) [8] => stdClass Object ( [msisdn] => 420778899002 [GsmSubscription] => Suspend 
[waiting_for_response] => [imsi] => 230031030037400 [iccid] => 8942031013792374002 ) [9] => stdClass Object ( [msisdn] => 420778899003 [GsmSubscription] => isActive 
[waiting_for_response] => [imsi] => 230031030037401 [iccid] => 8942031013792374010 ) [10] => stdClass Object ( [msisdn] => 420778899004 [GsmSubscription] => Suspend 
[waiting_for_response] => [imsi] => 230031030037402 [iccid] => 8942031013792374028 ) [11] => stdClass Object ( [msisdn] => 420778899005 [GsmSubscription] => Suspend 
[waiting_for_response] => [imsi] => 230031030037403 [iccid] => 8942031013792374036 ) [12] => stdClass Object ( [msisdn] => 420778899006 [GsmSubscription] => Suspend 
[waiting_for_response] => [imsi] => 230031030037404 [iccid] => 8942031013792374044 ) [13] => stdClass Object ( [msisdn] => 420778899007 [GsmSubscription] => isActive 
[waiting_for_response] => [imsi] => 230031030037405 [iccid] => 8942031013792374051 ) [14] => stdClass Object ( [msisdn] => 420778899008 [GsmSubscription] => Suspend 
[waiting_for_response] => [imsi] => 230031030037406 [iccid] => 8942031013792374069 ) [15] => stdClass Object ( [msisdn] => 420778899009 [GsmSubscription] => isActive 
[waiting_for_response] => [imsi] => 230031030037407 [iccid] => 8942031013792374077 ) [16] => stdClass Object ( [msisdn] => 420778899010 [GsmSubscription] => Suspend 
[waiting_for_response] => [imsi] => 230031030037408 [iccid] => 8942031013792374085 ) [17] => stdClass Object ( [msisdn] => 420778899011 [GsmSubscription] => Preactivate 
[waiting_for_response] => [imsi] => 230031030037409 [iccid] => 8942031013792374093 ) [18] => stdClass Object ( [msisdn] => 420778899012 [GsmSubscription] => Preactivate [waiting_for_response] => [imsi] => 230031030037410 [iccid] => 8942031013792374101 ) [19] => stdClass Object ( [msisdn] => 420778899013 [GsmSubscription] => isActive 
[waiting_for_response] => [imsi] => 230031030037411 [iccid] => 8942031013792374119 ) ) ) [error] => ) 

print_r给了我一个完整的JSON响应数组,但是我只需要选择MSISDN编号并将其显示在HTML表中。 我可以通过以下方式处理:

echo "<table>";
foreach($result->response->msisdn as $value)
{
$msisdnnumbers = $value->msisdn;
echo  "<tr><td>" . $msisdnnumbers . "</td></tr>";
}

echo "</table>";

这给了我所有MSISDN字段,这就是我想要的。 除非我只想回显[GsmSubscription]的值=“”(空无值)的MSISDN字段?

我可以仅回显那些特定数据吗? 以及如何通过PHP?

要访问对象成员,请使用$ obj-> KEY;。 您可以使用foreach访问对象数。 根据您的情况,尝试使用此代码

foreach($result->response->msisdn as $value)
 {
 echo $value->msisdn;
 }

Print_r用于打印数组。 回声用于打印单个数组值。 因此,如果您这样做:

echo $result["msisdn"];

您将打印msisdn值。

print_r用于打印数组。

使用echo打印msisdn值:

echo $result["msisdn"];

因此,应该可以正常工作。

请仔细看答案。 您可能想要的是:

echo $result["response"]["msisdn"];

这是美化PHP对象的脚本: http : //phillihp.com/toolz/php-array-beautifier/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM