2017-05-30 158 views
0

我試圖創建JSON數組以將它們回發給Slack,並使用while循環的信息。PHP while while循環到JSON數組中

這裏是我想出了代碼:

$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陣列每個Adset名稱與數量導致結構是這樣的:

'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和谷歌似乎並沒有幫助大專家。

+1

不要嘗試構建JSON字符串。只需構建一個PHP數組,然後在發佈之前將其轉換爲JSON。 – Pickle

回答

2
<?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); 
?>