![](/img/trans.png)
[英]PHP arrays — square brackets vs curly braces ($array[$i] vs $array{$i})
[英]going from PHP arrays to Javascript arrays curly braces vs square brackets
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":
$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>
來自“查看頁面源”的輸出:
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}]];
有沒有辦法從PHP 2維數組轉換為Javascript 2維數組但沒有花括號? 我希望不要寫一個手工填寫每個位置的方法? 我希望我只是錯誤地使用了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);
可以將其清除/使其更加抽象,但這是常規方法。
一種可能但不是很“干凈”的方法是方便地使陣列內陷
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>
用像這樣的數組
$data = array(array('2012-04-25', 2, 1, 2, 1, 1, 1),
array('2012-04-29', 4, 4, 2, 1, 1)
);
您將獲得輸出
<script>
var matrix = [[2012-04-25, 2, 1, 2, 1, 1, 1], [2012-04-29, 4, 4, 2, 1, 1]]
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.