簡體   English   中英

PHP-將json_encode數組傳遞給jQuery會更改格式和類型

[英]PHP - Passing json_encode Array to jQuery changes format and type

PHP數組輸出 print_R($color_str);

Array
(
    [0] => '#ff0000','#4caf50','#4caf50','#4caf50','#00bcd4'
    [1] => '#00bcd4','#4caf50','#4caf50','#4caf50','#4caf50'
    [2] => '#4caf50','#4caf50','#4caf50','#4caf50','#4caf50'
    [3] => '#4caf50','#4caf50','#4caf50','#4caf50','#4caf50'
    [4] => '#4caf50','#4caf50','#4caf50','#4caf50','#4caf50'
    [5] => '#4caf50','#4caf50','#4caf50','#4caf50','#4caf50'
    [6] => '#4caf50','#4caf50','#4caf50','#4caf50','#4caf50'
    [7] => '#4caf50','#4caf50','#4caf50','#4caf50','#4caf50'
)

將數組傳遞給jQuery

var color = new Array();
color = <?php echo json_encode($color_str) ?>;

console.log(color); 下面的輸出

["'#ff0000','#4caf50','#4caf50','#4caf50','#00bcd4'", "'#00bcd4','#4caf50','#4caf50','#4caf50','#4caf50'", "'#4caf50','#4caf50','#4caf50','#4caf50','#4caf50'", "'#4caf50','#4caf50','#4caf50','#4caf50','#4caf50'", "'#4caf50','#4caf50','#4caf50','#4caf50','#4caf50'", "'#4caf50','#4caf50','#4caf50','#4caf50','#4caf50'", "'#4caf50','#4caf50','#4caf50','#4caf50','#4caf50'", "'#4caf50','#4caf50','#4caf50','#4caf50','#4caf50'"]

要使用鍵訪問陣列,

for (var i = 0; i < 8; i++) {

    var color_str = [color[i]];
    console.log(color_str); //prints  ["'#ff0000','#4caf50','#4caf50','#4caf50','#00bcd4'"]
    console.log(jQuery.type(color_str)); //prints array
}

雙引號正在創建問題,並且在替換問題時,其類型更改為字符串而不是array

var strReplace = color_str[i].replace(/\,/g, "','");
finalColorStr = "'" + strReplace + "'";

colors參數期望將數組作為輸入。

var options = {
                width: 700,
                height: 350,
                legend: {position: 'none'},
                bar: {groupWidth: '50%'},
                isStacked: true,
                colors: finalColorStr
            };

如何更改數組值以更改其格式,如下所示並維護array類型?

["#ff0000", "#4caf50", "#4caf50", "#4caf50", "#00bcd4"]
<?php
// that's what you apparently have right now
$x = array(
    "'#ff0000','#4caf50','#4caf50','#4caf50','#00bcd4'",
    "'#00bcd4','#4caf50','#4caf50','#4caf50','#4caf50'",
    "'#4caf50','#4caf50','#4caf50','#4caf50','#4caf50'",
    "'#4caf50','#4caf50','#4caf50','#4caf50','#4caf50'",
    "'#4caf50','#4caf50','#4caf50','#4caf50','#4caf50'",
    "'#4caf50','#4caf50','#4caf50','#4caf50','#4caf50'",
    "'#4caf50','#4caf50','#4caf50','#4caf50','#4caf50'",
    "'#4caf50','#4caf50','#4caf50','#4caf50','#4caf50'"
);


$y = array_map( // for each "row" in $x
    function($e) {
        // get everything between ' as one respective element
        preg_match_all("!'([^']+)'!", $e, $m);
        return $m[1];
    },
    $x
);

echo json_encode($y);

這會給你一個像

[
  ["#ff0000", ..., "#00bcd4"],
  ["#00bcd4", ..., "#4caf50"],
  ...
]

但是更好的選擇不是開始於

array(
  "'#ff0000','#4caf50','#4caf50','#4caf50','#00bcd4'",
  "'#00bcd4','#4caf50','#4caf50','#4caf50','#4caf50'"
  ..
)

無論如何。 但是我不知道你是否有選擇...。

Array
(
    [0] => Array('#ff0000','#4caf50','#4caf50','#4caf50','#00bcd4'),
    [1] => Array('#00bcd4','#4caf50','#4caf50','#4caf50','#4caf50'),
    [2] => Array('#4caf50','#4caf50','#4caf50','#4caf50','#4caf50'),
    [3] => Array('#4caf50','#4caf50','#4caf50','#4caf50','#4caf50'),
    [4] => Array('#4caf50','#4caf50','#4caf50','#4caf50','#4caf50'),
    [5] => Array('#4caf50','#4caf50','#4caf50','#4caf50','#4caf50'),
    [6] => Array('#4caf50','#4caf50','#4caf50','#4caf50','#4caf50'),
    [7] => Array('#4caf50','#4caf50','#4caf50','#4caf50','#4caf50')
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM