2013-06-24 34 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细节。