2016-04-12 152 views
-1

不工作我有一個數組sessionValue是如下:在循環在JavaScript

document.write(sessionValue); 

Array ([Finance] => Array ([0] => 0 [1] => 3 [2] => 0 [3] => 0 [4] => 1) 
[Human resources] => Array ([0] => 1 [1] => 5 [2] => 1 [3] => 0 [4] => 0) 
[Infrastructure] => Array ([0] => 0 [1] => 3 [2] => 1 [3] => 0 [4] => 0)) 1 

使用檢索會話值和打印數組中的JavaScript頁面... in循環:

JSpage .js文件

sessionValue = '<?php echo json_encode($_SESSION["Count"]); ?>'; 
document.write(sessionValue); 
document.write("<br />"); 
for(var s1 in sessionValue) { 
for(var s in sessionValue[s1]) { 
    document.write(s); 
}} 

給出輸出:

{"Finance":[0,3,0,0,1],"Human resources":[1,5,1,0,0],"Infrastructure":[0,3,1,0,0]} 
0000000000000000000000000000000000000000000000000000000000000000000000000000000000 

而且如果for ... in循環寫入如下:

for(var s1 in sessionValue) { 
for(var s in sessionValue[s1]) { 

    document.write(sessionValue[s1][s]); 
    document.write("<br />"); 
}} 

給出輸出:

{"Finance":[0,3,0,0,1],"Human resources":[1,5,1,0,0],"Infrastructure":[0,3,1,0,0]} 
{ 
" 
F 
i 
n 
a 
n 
c 
e 
" 
: 
[ 
0 
, 
3 
, 

,並繼續打印整個array.I相信它認爲它作爲字符串連雖然我用json_encode()。

我想檢索關鍵,例如。財務和內部數組值。如何解決這個問題?

+0

你在sessionValue設置爲一個字符串在這裏:'sessionValue ='<?php echo json_encode($ _ SESSION [「Count」]); ?>';'你需要把它作爲一個對象正確輸出。只要刪除單引號。 – ManoDestra

回答

2

這是一個字符串,因爲你把單引號括起來的:

sessionValue = '<?php echo json_encode($_SESSION["Count"]); ?>' 

刪除這些引號,以獲得一個對象,而不是:

var sessionValue = <?php echo json_encode($_SESSION["Count"]); ?>; 
+0

哦......對不起,謝謝! –

+0

不客氣@AishwaryaR – Paulpro

0

如果你看看在瀏覽器中生成的JavaScript 。你會看到

sessionValue = '<?php echo json_encode($_SESSION["Count"]); ?>'; 

產生

sessionValue = '{"Finance":[0,3,0,0,1],"Human resources":[1,5,1,0,0],"Infrastructure":[0,3,1,0,0]}'; 

這的確是一個字符串值

sessionValue = <?php echo json_encode($_SESSION["Count"]); ?>; 

將在另一方面產生一個對象文本(無plings)

sessionValue = {"Finance":[0,3,0,0,1],"Human resources":[1,5,1,0,0],"Infrastructure":[0,3,1,0,0]} 

與那說你永遠不應該使用for in循環遍歷數組中的JS,因爲它不只是在數組中的元素,而且所有其他屬性迭代,這是至少length

從上面的變化,你也應該考慮rewritting您iteratiosn所以擱置到

for(var s1 in sessionValue) { 
    if(sessionValue.hasOwnProperty(s1)){ 
     var arr = sessionValue[s1] 
     for(var len=arr.length,i=0; i<len; i = i +1) { 
      document.write(arr[i]); 
     } 
    } 
}