2016-04-12 22 views
-1

Ich habe ein Array sessionValue, die wie folgt lautet:für in Schleife nicht in JavaScript arbeitet

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 

Abrufen von Sitzungswert und Druck-Array in der Javascript-Seite mit für ... in Schleife:

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); 
}} 

Ausgang Gibt:

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

Und wenn das für ... in Schleife wird wie folgt geschrieben:

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

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

Gibt Ausgang:

{"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 
, 

und es geht weiter, auch ganze array.I glauben, es hält es als Zeichenfolge drucken obwohl ich json_encode() benutzt habe.

Ich möchte den Schlüssel z. B. abrufen. Finanzen und die inneren Array-Werte. Wie löst man das?

+0

Hier setzen Sie sessionValue auf einen String: 'sessionValue = ' '; 'Sie müssen es korrekt als Objekt ausgeben. Entfernen Sie einfach die einfachen Anführungszeichen. – ManoDestra

Antwort

2

Es ist eine Zeichenfolge, weil Sie einfache Anführungszeichen um es ausdrückte:

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

diese Zitate entfernen stattdessen ein Objekt zu erhalten:

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

Oh ... richtig danke !! –

+0

Gern geschehen @AishwaryaR – Paulpro

0

Wenn Sie einen Blick auf die generierten Javascript im Browser . Sie würden sehen, dass

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]}'; 

erzeugt, die in der Tat einen String-Wert

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

würde auf der anderen Seite erzeugen ein Objektliteral (keine Wellen oder Kupplungen)

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

mit dem gesagt, Sie sollten nie verwenden, um eine for in Schleife ein Array in JS iterieren, weil es nicht nur eine Iteration über die Elemente in der Anordnung, sondern auch alle anderen Eigenschaften, die length zumindest

so abgesehen von der obigen Änderung Sie auch Ihre iteratiosn berücksichtigen sollten rewritting zu

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]); 
     } 
    } 
} 
Verwandte Themen