从PHP数组到Javascript数组大括号vs方括号
PHP版本5.3.14 声明我的数组以及如何在程序中使用它:(更改为通用代码方案) 我创建的PHP数组如下所示:从PHP数组到Javascript数组大括号vs方括号,php,javascript,html,ajax,json,Php,Javascript,Html,Ajax,Json,PHP版本5.3.14 声明我的数组以及如何在程序中使用它:(更改为通用代码方案) 我创建的PHP数组如下所示: $totalData; getnumSends($SomeObject){ $dataArray[0] = $someObject->Date //Date is a String foreach($anotherObject as $Object2){ switch($anotherObject->String){ case "XX":
$totalData;
getnumSends($SomeObject){
$dataArray[0] = $someObject->Date //Date is a String
foreach($anotherObject as $Object2){
switch($anotherObject->String){
case "XX":
$dataArray[1]+=1;
break;
case "YY":
$dataArray[2]+=1;
break;
}
}
}
//Method just puts an int value at certain places in the array
//extra code for putting ints in the array
return $dataArray;
}
$someIndex = 0;
foreach($someObject as $Object1){ //that is very abstract
$totalData[$someIndex] = $Object1->getNumSend($someObject);
$someIndex+=1;
}
这有意义吗
假设我有一个PHP数组,它在print\r($totalData)时是这样的代码>被称为:
Array
(
[0] => Array
(
[0] => 2012-04-25
[1] => 2
[2] => 1
[3] => 2
[4] => 1
[5] => 1
[6] => 1
)
[1] => Array
(
[0] => 2012-04-29
[1] => 4
[2] => 4
[3] => 2
[4] => 1
[5] => 1
)
)
现在,我有一些javascript代码,我想用来绘制数据。脚本需要以下格式的数据:
var matrix = [[2012-04-25, 2, 1, 2, 1, 1, 1], [2012-4-29, 4, 4, 2, 1, 1]];
为了将php数组转换成javascript数组,似乎有多种方法,但我尝试过的每一种方法都无法获得所有的方括号。最接近我的是:
<script>
var matrix = <?php echo json_encode($totalData); ?>;
</script>
有没有一种方法可以从PHP二维数组过渡到Javascript二维数组,但不使用大括号?我希望不要写一个手工填充每个点的方法?我希望我只是错误地使用了JSON。任何帮助都会很好。从另一端攻击这一点:
我知道您说过您不想手动重建阵列,但这里有一种方法作为最后手段:
var matrix = [{"0":"2012-04-25","1":2,"2":1,"3":2,"4":1,"5":1,"6":1},{"0":"2012-04-29","1":4,"2":4,"3":2,"4":1,"5":1}];
var retArray = new Array();
var tmpArr1 = new Array();
var tmpArr2 = new Array();
for(var i = 0; i < retArray.length; ++i) {
for(property in matrix[i]) {
(i === 0) ? tmpArr1.push(matrix[i][property]) : tmpArr2.push(matrix[i][property]);
}
}
retArray.push(tmpArr1);
retArray.push(tmpArr2);
var矩阵=[{“0”:“2012-04-25”,“1”:2,“2”:1,“3”:2,“4”:1,“5”:1,“6”:1},{“0”:“2012-04-29”,“1”:4,“2”:4,“3”:2,“4”:1,“5”:1};
var retArray=新数组();
var tmpArr1=新数组();
var tmpArr2=新数组();
对于(变量i=0;i
它可能会被清理/变得更抽象,但这是一般的方法 从另一端攻击它:
我知道您说过您不想手动重建阵列,但这里有一种方法作为最后手段:
var matrix = [{"0":"2012-04-25","1":2,"2":1,"3":2,"4":1,"5":1,"6":1},{"0":"2012-04-29","1":4,"2":4,"3":2,"4":1,"5":1}];
var retArray = new Array();
var tmpArr1 = new Array();
var tmpArr2 = new Array();
for(var i = 0; i < retArray.length; ++i) {
for(property in matrix[i]) {
(i === 0) ? tmpArr1.push(matrix[i][property]) : tmpArr2.push(matrix[i][property]);
}
}
retArray.push(tmpArr1);
retArray.push(tmpArr2);
var矩阵=[{“0”:“2012-04-25”,“1”:2,“2”:1,“3”:2,“4”:1,“5”:1,“6”:1},{“0”:“2012-04-29”,“1”:4,“2”:4,“3”:2,“4”:1,“5”:1};
var retArray=新数组();
var tmpArr1=新数组();
var tmpArr2=新数组();
对于(变量i=0;i
它可能会被清理/变得更抽象,但这是一般的方法 一种可能但不是很“干净”的方法是方便地将阵列内爆
function getJSArray($data){
$jsMatrix = '[';
foreach($data as $key => $val){
$jsMatrix .= '[' . implode(', ', $val) . ']';
if($key != count($data)-1)
$jsMatrix .= ', ';
}
$jsMatrix .= ']';
return $jsMatrix;
}
然后
<script>
var matrix = <?php echo getJSArray($totalData); ?>;
</script>
您将获得输出
<script>
var matrix = [[2012-04-25, 2, 1, 2, 1, 1, 1], [2012-04-29, 4, 4, 2, 1, 1]]
</script>
风险值矩阵=[[2012-04-25,2,1,2,1,1,1],[2012-04-29,4,4,2,1,1]]
一种可能但不是很“干净”的方法是方便地将阵列内爆
function getJSArray($data){
$jsMatrix = '[';
foreach($data as $key => $val){
$jsMatrix .= '[' . implode(', ', $val) . ']';
if($key != count($data)-1)
$jsMatrix .= ', ';
}
$jsMatrix .= ']';
return $jsMatrix;
}
然后
<script>
var matrix = <?php echo getJSArray($totalData); ?>;
</script>
您将获得输出
<script>
var matrix = [[2012-04-25, 2, 1, 2, 1, 1, 1], [2012-04-29, 4, 4, 2, 1, 1]]
</script>
风险值矩阵=[[2012-04-25,2,1,2,1,1,1],[2012-04-29,4,4,2,1,1]]
确保PHP数组中的键是int而不是字符串。您首先是如何创建PHP数组的?如果您使用var\u dump
而不是print\r
,它可能会告诉您密钥的类型。您运行的是什么版本的PHP…密钥不是您提供的示例中的日期。有两个条目的值为日期。这些键是数组索引。可以使用$totalData[]=…
或array\u push($totalData,…)
。如果你只追求一个价值观,就选择第一个。让数组创建索引,你应该会很好,但是你要么在那里硬编码字符串,无序调用它们,要么解释得很有趣。或者,手动创建日期数组<代码>$arr=array($someObj->Date,$someInt1,$someInt2,$someInt3)代码>$outerar[]=$arr代码>确保在PHP数组中,键是int而不是字符串。您首先是如何创建PHP数组的?如果您使用var\u dump
而不是print\r
,它可能会告诉您密钥的类型。您运行的是什么版本的PHP…密钥不是您提供的示例中的日期。有两个条目的值为日期。这些键是数组索引。可以使用$totalData[]=…
或array\u push($totalData,…)
。如果你只追求一个价值观,就选择第一个。让数组创建索引,你应该会很好,但是你要么在那里硬编码字符串,无序调用它们,要么解释得很有趣。或者,手动创建日期数组<代码>$arr=array($someObj->Date,$someInt1,$someInt2,$someInt3)代码>$outerar[]=$arr代码>