【问题标题】:PHP while loop into JSON arraysPHP while 循环进入 JSON 数组
【发布时间】:2017-05-31 03:37:49
【问题描述】:

我正在尝试创建 JSON 数组以使用来自 while 循环的信息将它们回发到 Slack。

这是我想出的代码:

$adset = null;

while ($row = mysqli_fetch_array($leadsAdsetsQuery)) {
  if ($row["adset"] != $adset) {
    $adset = $row["adset"];
    echo "{$adset}<br>";
  }
  echo $row["id"] . "<br>";
}

输出是:

Adset Name 1
20
Adset Name 2
34
Adset Name 3
11

我需要为每个广告集名称创建一个新的 JSON 数组,其中包含如下的潜在客户数量结构:

  'attachments' => 
  array (
    0 => 
    array (
      'fallback' => 'XXX',
      'text' => 'XXX',
      'fields' => 
      array (  
        0 => 
        array (
          'title' => 'Adset Name 1',
          'value' => '20',
          'short' => true,
        ),
        1 => 
        array (
          'title' => 'Adset Name 2',
          'value' => '34',
          'short' => true,
        ),
        2 => 
        array (
          'title' => 'Adset Name 3',
          'value' => '11',
          'short' => true,
        ),
      ),
      'color' => '#F35A00',
    ),
  )

我不是 JSON 和 PHP 方面的专家,谷歌似乎也没有帮助。

【问题讨论】:

  • 不要尝试构建 JSON 字符串。只需构建一个 PHP 数组,然后在发布之前将其转换为 JSON。

标签: php arrays json


【解决方案1】:
<?php
   $arrResult = array();
   $arrResult['attachments'] = array();

   // add 0 'fallback'  'text'  'fields  'color'
   $arrResult['attachments'][0] = array(
      'fallback' => 'XXX',
      'text' => 'XXX',
      'fields' => array(),
      'color' => '#F35A00'
   );

   // add 0 'fields'
   while($row = mysqli_fetch_array($leadsAdsetsQuery)){
      if(!empty($row['adset']) and !empty($row['id'])){
         $arrResult['attachments'][0]['fields'][] = array(
            'title' => $row["adset"],
            'value' => $row['id'],
            'short' => true
         );
      };
   };

   // print JSON 
   echo json_encode($arrResult, JSON_FORCE_OBJECT);
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-01
    • 2012-02-21
    • 1970-01-01
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    相关资源
    最近更新 更多