[英]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.