2015-10-07 26 views
0

PHP阵列输出print_R($color_str);PHP - 传递json_encode阵列将jQuery改变格式与类型

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 PARAM期待一个数组输入。

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

如何改变阵列值来改变其格式如下图所示,维护型array

["#ff0000", "#4caf50", "#4caf50", "#4caf50", "#00bcd4"] 
+0

jQuery中,序列化您的数组或在PHP只是再次编码您的阵列即json_encode($阵列); –

+2

也许'[0] =>'#ff0000','#4caf50','#4caf50','#4caf50','#00bcd4'必须是[[0] => ['#ff0000','#4caf50 ','#4caf50','#4caf50','#00bcd4'] – Justinas

+0

您是否在php:array(array(),array()... array())中尝试了这种表示形式,然后使用json_encode() – pankaj

回答

0
<?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'" 
    .. 
) 

。但我不知道,如果你有一个选择或不....

0
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') 
)