2017-02-17 67 views
0

我使用json_encode()將數組$arrData轉換爲JSON。我從網上收集數據並將其放入php數組中。問題是輸出充滿了製表符。我試過$arrData = trim(preg_replace('/\t/', '', $arrData)); - 但它刪除了\t和陣列內的所有數組。 有沒有辦法在不破壞數組結構的情況下刪除所有\t從多維數組創建的JSON中刪除` t`(php)

我的數組:

$arrData = array(
       "chart" => array(
        "caption" => "Number of visitors last week", 
     "subCaption" => "Bakersfield Central vs Los Angeles Topanga", 
     "captionFontSize" => "14", 
     "subcaptionFontSize" => "14", 
     "subcaptionFontBold" => "0", 
     "paletteColors" => "#0075c2,#1aaf5d,#FF5733,#33B5FF", 
     "bgcolor" => "#ffffff", 
     "showBorder" => "0", 
     "showShadow" => "0", 
     "showCanvasBorder" => "0", 
     "usePlotGradientColor" => "0", 
     "legendBorderAlpha" => "0", 
     "legendShadow" => "0", 
     "showAxisLines" => "0", 
     "showAlternateHGridColor" => "0", 
     "divlineThickness" => "1", 
     "divLineDashed" => "1", 
     "divLineDashLen" => "1", 
     "xAxisName" => "Day", 
     "showValues" => "0" 
       ) 
      ); 
$actualCategory = array($rowData[0][1], $rowData[0][2], $rowData[0][3], $rowData[0][4], $rowData[0][5], $rowData[0][6], $rowData[0][7]); 
       $a = array( 
       array($rowData[2][1], $rowData[2][2], $rowData[2][3], $rowData[2][4], $rowData[2][5], $rowData[2][6], $rowData[2][7]), 
       array($rowData[5][1], $rowData[5][2], $rowData[5][3], $rowData[5][4], $rowData[5][5], $rowData[5][6], $rowData[5][7]), 
       array($rowData[8][1], $rowData[8][2], $rowData[8][3], $rowData[8][4], $rowData[8][5], $rowData[8][6], $rowData[8][7]), 
       array($rowData[11][1], $rowData[11][2], $rowData[11][3], $rowData[11][4], $rowData[11][5], $rowData[11][6], $rowData[11][7]) 
       ); 


       $arrData['categories'] = array(); 
       $arrData['categories']['category'] = array(); 
       $arrData['dataset'] = array(); 



       foreach ($actualCategory as $value) { 
        array_push($arrData['categories']['category'], 
         array(
          'label' => $value 
         ) 
        ); 
       } 

       $q = 1; 
       for($z = 0;$z <= 3; $z++){ 

       $x[$z] = array('seriesname' => $rowData[$q][0], 'data' => array()); 
        foreach ($a[$z] as $value) { 
         array_push($x[$z]['data'], 
          array(
           'value' => $value 
          ) 
         ); 
        } 
       $q = $q + 3; 
       } 
    $arrData['dataset'] = $x; 

我的JSON代碼:

{ 
"chart":{ 
"caption":"Number of visitors last week", 
"subCaption":"Bakersfield Central vs Los Angeles Topanga", 
"captionFontSize":"14", 
"subcaptionFontSize":"14", 
"subcaptionFontBold":"0", 
"paletteColors":"#0075c2,#1aaf5d,#FF5733,#33B5FF", 
"bgcolor":"#ffffff", 
"showBorder":"0", 
"showShadow":"0", 
"showCanvasBorder":"0", 
"usePlotGradientColor":"0", 
"legendBorderAlpha":"0", 
"legendShadow":"0", 
"showAxisLines":"0", 
"showAlternateHGridColor":"0", 
"divlineThickness":"1", 
"divLineDashed":"1", 
"divLineDashLen":"1", 
"xAxisName":"Day", 
"showValues":"0"}, 
"categories":{ 
"category":[ 
{"label":" \t \t N. \t 12\/02 \t "}, 
{"label":" \t \t Pn. \t 13\/02 \t "}, 
{"label":" \t \t Wt. \t 14\/02 \t "}, 
{"label":" \t \t \u015ar. \t 15\/02 \t "}, 
{"label":" \t \t Cz. \t 16\/02 \t "}, 
{"label":" \t \t Pt. \t 17\/02 \t "}, 
{"label":" \t \t So. \t 18\/02 \t "}]}, 
"dataset":[ 
{ 
"seriesname":" \t IRDN \t ", 
"data":[ 
{"value":" \t 142.59 \t "}, 
{"value":" \t 174.88 \t "}, 
{"value":" \t 176.97 \t "}, 
{"value":" \t 182.48 \t "}, 
{"value":" \t 160.15 \t "}, 
{"value":" \t 160.72 \t "}, 
{"value":" \t 165.47 \t "}]}, 
{ 
"seriesname":" \t \t \t SIRDN \t \t ", 
"data":[{"value":" \t 148.81 \t \t "}, 
{"value":" \t 197.29 \t \t "}, 
{"value":" \t 202.27 \t \t "}, 
{"value":" \t 211.93 \t \t "}, 
{"value":" \t 177.87 \t \t "}, 
{"value":" \t 179.37 \t \t "}, 
{"value":" \t 177.69 \t \t "}]}, 
{ 
"seriesname":" \t \t IRDN24 \t \t ", 
"data":[{"value":" \t 140.31 \t \t "}, 
{"value":" \t 174.50 \t \t "}, 
{"value":" \t 180.38 \t \t "}, 
{"value":" \t 187.70 \t \t "}, 
{"value":" \t 161.91 \t \t "}, 
{"value":" \t 161.62 \t \t "}, 
{"value":" \t 160.98 \t \t "}]}, 
{ 
"seriesname":" \t \t IRDN 8.22 \t \t ", 
"data":[{"value":" \t 147.33 \t "}, 
{"value":" \t 197.02 \t "}, 
{"value":" \t 202.21 \t "}, 
{"value":" \t 211.28 \t "}, 
{"value":" \t 178.11 \t "}, 
{"value":" \t 179.32 \t "}, 
{"value":" \t 176.31 \t "} 
]}]} 
+0

從您的JSON數據刪除'\ t'。可能嗎? – smoqadam

+0

$ smoqadam是的我想從數組或JSON中刪除所有'\ t'。我只需要清晰的值。 – piotr

+0

如果元素是數組,則可以使用'array_walk()'和遞歸調用函數。半小時後,我可以編寫一個示例 –

回答

0

更換他們在JSON。確保使用單引號:

$json = str_replace('\t', '', $json); 

你的正則表達式也可以工作,但需要三個\

$json = preg_replace('/\\\t/', '', $json); 

爲了得到\t和周圍的空間使用:

$json = preg_replace('/(\s+)?\\\t(\s+)?/', '', $json); 
+0

謝謝:)它的工作。 – piotr

+0

最後一個不會刪除所有空格。例如,對於值爲'142.59'的值,它會刪除空格和製表符。是否有可能刪除空格標籤和sapce? – piotr

+0

它與您的示例數據一起工作,但我更新了模式。 – AbraCadaver

0
function clear_array(&$arr) 
{ 
     array_walk($arr,function (&$value,$key) 
     { 
       if(gettype($value)=='array') 
         clear_array($value); 

       else if(gettype($value)=='string'){ 
         $value= preg_replace('/[\s]/', '', $value); 
       } 
     }); 
}  

傳遞您的數組,它將從值中移除所有空格。


JSON輸出

{ 
    "chart": { 
     "caption": "Numberofvisitorslastweek", 
     "subCaption": "BakersfieldCentralvsLosAngelesTopanga", 
     "captionFontSize": "14", 
     "subcaptionFontSize": "14", 
     "subcaptionFontBold": "0", 
     "paletteColors": "#0075c2,#1aaf5d,#FF5733,#33B5FF", 
     "bgcolor": "#ffffff", 
     "showBorder": "0", 
     "showShadow": "0", 
     "showCanvasBorder": "0", 
     "usePlotGradientColor": "0", 
     "legendBorderAlpha": "0", 
     "legendShadow": "0", 
     "showAxisLines": "0", 
     "showAlternateHGridColor": "0", 
     "divlineThickness": "1", 
     "divLineDashed": "1", 
     "divLineDashLen": "1", 
     "xAxisName": "Day", 
     "showValues": "0" 
    }, 
    "categories": { 
     "category": [ 
      { 
       "label": "N.12/02" 
      }, 
      { 
       "label": "Pn.13/02" 
      }, 
      { 
       "label": "Wt.14/02" 
      }, 
      { 
       "label": "Śr.15/02" 
      }, 
      { 
       "label": "Cz.16/02" 
      }, 
      { 
       "label": "Pt.17/02" 
      }, 
      { 
       "label": "So.18/02" 
      } 
     ] 
    }, 
    "dataset": [ 
     { 
      "seriesname": "IRDN", 
      "data": [ 
       { 
        "value": "142.59" 
       }, 
       { 
        "value": "174.88" 
       }, 
       { 
        "value": "176.97" 
       }, 
       { 
        "value": "182.48" 
       }, 
       { 
        "value": "160.15" 
       }, 
       { 
        "value": "160.72" 
       }, 
       { 
        "value": "165.47" 
       } 
      ] 
     }, 
     { 
      "seriesname": "SIRDN", 
      "data": [ 
       { 
        "value": "148.81" 
       }, 
       { 
        "value": "197.29" 
       }, 
       { 
        "value": "202.27" 
       }, 
       { 
        "value": "211.93" 
       }, 
       { 
        "value": "177.87" 
       }, 
       { 
        "value": "179.37" 
       }, 
       { 
        "value": "177.69" 
       } 
      ] 
     }, 
     { 
      "seriesname": "IRDN24", 
      "data": [ 
       { 
        "value": "140.31" 
       }, 
       { 
        "value": "174.50" 
       }, 
       { 
        "value": "180.38" 
       }, 
       { 
        "value": "187.70" 
       }, 
       { 
        "value": "161.91" 
       }, 
       { 
        "value": "161.62" 
       }, 
       { 
        "value": "160.98" 
       } 
      ] 
     }, 
     { 
      "seriesname": "IRDN8.22", 
      "data": [ 
       { 
        "value": "147.33" 
       }, 
       { 
        "value": "197.02" 
       }, 
       { 
        "value": "202.21" 
       }, 
       { 
        "value": "211.28" 
       }, 
       { 
        "value": "178.11" 
       }, 
       { 
        "value": "179.32" 
       }, 
       { 
        "value": "176.31" 
       } 
      ] 
     } 
    ] 
} 
+0

我已經將我的數據數組傳遞給了這個函數,但它完全刪除了它。當我回應結果時,我得到了'null'。 '$ arrData = clear_array($ arrData); $ jsonEncodedData = json_encode($ arrData); echo $ jsonEncodedData;' – piotr

+0

我用你的json輸入作爲一個測試,通過下面一行'$ arr = json_decode($ x,$ assoc = true); clear_array($ arr);' 它很好用 –

+0

Works,thanks :) – piotr