2013-06-24 55 views
1
Array 
(
    [0] => Array 
     (
      [sno] => 1 
      [name] => Sivamani 
      [contact] => 750241378 
      [$city] => Madurai 
     ) 

) 

Array 
(
    [1] => Array 
     (
      [sno] => 2 
      [name] => Guru 
      [contact] => 1111111111 
      [$city] => Chennai 
     ) 

) 

這是我的PHP的print_r陣列 我怎樣才能得到數組的長度和循環這些打印在javascript如何讓PHP的print_r陣列成JavaScript

+3

[檢查'json_encode'](http://www.php.net/json_encode) –

回答

0

您可以使用console.log打印到控制檯:(這是爲了調試)

var a = [1, 2, 3]; 
console.log(a); // [1, 2, 3] 

如果你想字符串數組/對象,你可以使用JSON.stringify:(這是從前端傳輸數據到後端的好辦法)

var a = [1, 2, 3]; 
JSON.stringify(a); // "[1, 2, 3]" 

此外,如果你想美化的字串可以使用3參數JSON.stringify

JSON.stringify(obj, handler, spaces); 
JSON.stringify([1, 2, 3], null, "\t"); 
JSON.stringify([1, 2, 3], null, " "); 
JSON.stringify([1, 2, 3], null, 2); 
2

最好的辦法是json_encode

PHP> JS:

echo json_encode($array); 
在JS

var array = phpString; 

基本上,PHP,同時生成的頁面,補充一點:

echo '<script type="text/javascript"> var phpArray = <?= json_encode($yourArray);?>;</script>'; 

而且你的PHP數組可以作爲一個全局(邪惡)變量使用......你可以在JS模塊中迴應這個值,並將它公開ntrolled方式......但谷歌對於更多的細節......

無論如何,你做了之後這樣的:

console.log(phpArray.length); 
for (var i=0;i<phpArray.length;i++) 
{ 
    //assoc arrays are objects in JS, hence: 
    for(var j in phpArray[i]) 
    { 
     if (phpArray[i].hasOwnProperty(j)) 
     { 
      console.log(j + ' => ' + phpArray[i][j]); 
     } 
    } 
} 
+1

爲什麼在客戶端調用'JSON.parse'?無論如何,JSON編碼的數據應該是有效的對象字面值。 – Sirko

+0

@Sirko:該死的,你是絕對正確的:)將編輯我的答案...我很習慣使用AJAX發送數據,你需要JSON.parse調用,因此毫無意義的JSON.parse調用 –

+0

JSON.parse不正確,因爲嵌入式JavaScript字符串在到達JSON解析器之前會經過額外的插值級別。所以你需要'var array = JSON.parse('<?php echo javascript_string_escape(json_encode($ phpArray));?>');'以獲得正確的結果。直接做'var a = <?php echo json_encode($ phpArray); ?>;'在php json_encode默認配置中是錯誤的,因爲默認的unicode轉義。 – Esailija

0

試試這個:

var data = new Object(); 
    data["firstname"] = "John"; 
    data["lastname"] = "Bhutt"; 
    data["age"] = 29; 

    alert(data.toSource()); //Will return "({firstname:"John", lastname:"Smith", age:21})" 
+0

這是非標準版,只適用於FireFox? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toSource – andlrc

0

我使用PHP json_encode函數代替。所以你的代碼應該是這樣的:

echo json_encode($YOUR_ARRAY); 

在客戶端你應該解析字符串,你會得到你的數組。我通常使用jQuery。通過AJAX請求東西可以看起來像:

$.post(SCRIPT_URL, POST_PARAMS, 
    function(response) { 
    // YOUR ACTIONS HERE - response is your parsed ARRAY 
    }, 
    'json' 
); 

您可以找到有關jQuery.post方法here細節。