【问题标题】:Fragmenting incoming data with PHP Json使用 PHP Json 对传入数据进行分段
【发布时间】:2021-06-02 23:29:01
【问题描述】:

传入json数据的形式:

{
  "statusCode": 200,
  "message": "success",
  "result": [
    {
      "longitude": -87.06687,
      "start_location_latitude": 20.63589,
      "start_location_longitude": -87.06687,
      "end_location_latitude": 20.63589,
      "end_location_longitude": -87.06687,
      "highlights": [
        {
          "title": "Oh Yes...Mezcal Shots",
          "url": "https://phoenix-cdn.azureedge.net/phoenix-blob-public-exps/1396_Mezcal_Shot.jpg"
        },
        {
          "title": "Playa Del Carmen Beachfront",
          "url": "https://phoenix-cdn.azureedge.net/phoenix-blob-public-exps/1396_Playa_Del_Carmen-Beach_Punta_Esmeralda.jpg"
        },
        {
          "title": "Visit the Market",
          "url": "https://phoenix-cdn.azureedge.net/phoenix-blob-public-exps/1396_Playa_Del_Carmen.jpg"
        }
      ]
    }
  ]
}

这个传入的数据被合并成一行。

https://phoenix-cdn.azureedge.net/phoenix-blob-public-exps/1396_Mezcal_Shot.jpghttps://phoenix-cdn.azureedge.net/phoenix-blob-public-exps/1396_Playa_Del_Carmen-Beach_Punta_Esmeralda.jpghttps://phoenix-cdn.azureedge.net/phoenix-blob-public-exps/1396_Playa_Del_Carmen.jpg

但我想做的是获取这些数据的前 4 个,例如,将它们放入单独的变量中并使用它们。但是,我从来没有做到这一点。

我的代码:

foreach($UnlockData as $highlights)
{
    foreach($highlights as $SingleImage)
    {
        if(strlen($SingleImage['url']) > 3) {
            echo $SingleImage['url'];
        }
    }
}

【问题讨论】:

  • 您只想分隔行吗?只需将 echo $SingleImage['url']; 更改为 echo $SingleImage['url'];."<br>" 或添加 div,或任何您想要将它们分开的行。如果您希望它们作为单独的变量,则通过将 echo 替换为 $var[$index]= $SingleImage['url']; 将它们输入单独的变量
  • 谢谢。仔细看,传入的数据就是url。我想将它们分开我可以单独打印“col-3”类。但我想要的是例如将前 4 个昨天放入单独的变量中。
  • 总是前 4 个还是有任意数量的?如果它是任意数字,那么只需将 echo $SingleImage['url']; 更改为 echo '<div class="col-3">'.$SingleImage['url'].'</div>'; 或任何您想要的。这是一种基本的 php 东西,不是真正的技术或新东西。如果您将它们输入变量以供以后使用,那么执行 $var[$index]= $SingleImage['url']; 的建议仍然有效。
  • 如果你想在 4 条记录后停止而不是添加一个计数器 $c 当你有 4 条记录时增加它 $c++break;
  • 你放弃了吗?

标签: php arrays json foreach


【解决方案1】:

这将返回 result 中每个条目的前 4 个亮点。我正在使用 json 对象 vs 数组,因为我发现将它用作对象可以更容易阅读代码。

<?php
$json = json_decode($incomingJSON);
foreach ($json->result as $result) {
  $ctr = 0 ;
  foreach($result->highlights as $highlight) {
    if (strlen($highlight->url) < 5) continue;

    echo "<P>" . $highlight->title. " - " . $highlight->url;

    $ctr ++;
    if ($ctr>3) break;
  }
}

【讨论】:

    【解决方案2】:

    如果只有一个result,那么只需从highlights 获取所有url(不清楚为什么strlen):

    $urls = array_column($array['result'][0]['highlights'], 'url');
    
    foreach($urls as $url) {
        if(strlen($url) > 3) {
            echo $url;
        }
    }
    

    如果有多个result,则获取所有highlights,然后从中获取所有url

    $urls = array_column(array_column($array['result'], 'highlights'), 'url']);
    

    【讨论】:

      猜你喜欢
      • 2019-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-17
      • 1970-01-01
      • 2017-11-25
      相关资源
      最近更新 更多