Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将二维数组从PHP返回到JavaScript_Javascript_Php_Jquery - Fatal编程技术网

将二维数组从PHP返回到JavaScript

将二维数组从PHP返回到JavaScript,javascript,php,jquery,Javascript,Php,Jquery,我的JavaScript调用一个PHP脚本,该脚本在磁盘上构建一个二维文件夹数组。文件夹名称、文件数和总大小包含在数组中,因此该数组如下所示: folders[$i][0] = $folder_name; folders[$i][1] = $files_in_folder; folders[$i][2] = $folder_size; 该调用是通过以下JavaScript进行的: $.post('myajax.php', {op : get_folders'},

我的JavaScript调用一个PHP脚本,该脚本在磁盘上构建一个二维文件夹数组。文件夹名称、文件数和总大小包含在数组中,因此该数组如下所示:

folders[$i][0] = $folder_name;
folders[$i][1] = $files_in_folder;
folders[$i][2] = $folder_size;
该调用是通过以下JavaScript进行的:

$.post('myajax.php', {op : get_folders'},       
                           function(responseTxt, statusTxt, xhr) {  
                           });
让PHP返回数组的最佳方式是什么?让JavaScript或jQuery返回二维数组以便于访问的最佳方式是什么

谢谢

简短回答:

json_decode($string)


无论数组是二维的还是一维的,在将其作为响应发送之前,使用
json_encode
,这是自v5.2.0起PHP的内置函数,是准备在JavaScript中轻松使用的最佳方法


通过这种方式,Ajax调用接收一个JSON对象,该对象在JavaScript中很容易引用或迭代。

JSON是一种很好的方法,因为它是JavaScript中构造数据的事实标准。可以使用PHP数组生成JSON

使用JSON API最佳实践,我将如何构造JSON响应:

{folders: [
 {name: 'Folder name', size: 513, numberOfFiles: 7},
 {name: 'Another folder', size: 1214, numberOfFiles: 34},
 etc...
]} 
myajax.php
中的代码大致如下:

<?php
$folderItems = array();

foreach($folders as $folder) {
  array_push($folderItems, array(
    "name" => $folder[0],
    "numberOfFiles" => $folder[1],
    "size" => $folder[2]
  ));  
}

echo json_encode(array("folders" => $folderItems));
?>

对JSON格式进行反序列化/序列化。
<?php
$folderItems = array();

foreach($folders as $folder) {
  array_push($folderItems, array(
    "name" => $folder[0],
    "numberOfFiles" => $folder[1],
    "size" => $folder[2]
  ));  
}

echo json_encode(array("folders" => $folderItems));
?>
jQuery.getJSON('/myajax.php', function(data){
  var folders = data.folders;
  // Your code here...
});