繁体   English   中英

将二维数组从javascript传递到php,但大小减少了

[英]pass two dimensional array from javascript to php but the size were reduced

我想将一个2D数组从javascript传递给PHP。 但结果我得到的只是阵列的一部分。

我使用arr.length检查大小是75.我使用firefox开发工具检查发布的数据是否正常。 但我在PHP中使用sizeof($arr)来检查43的大小。

我使用apache作为服务器。 数组的内容是字符串但不超过10个字符。

以下是我使用的代码。

JavaScript的:

    myCol= 0 + $('#tabResult th').length; //75 
    myRow= 0 + $('#tabResult tr').length; //62

    var data = new Array(myRow);
    for(i = 0; i < myRow; i++){
        data[i] = new Array(75);
    }

    $.post('getReport1/getReport1ExportXls',{
        table: $('#getReport1List').html(),
        data: data,
        myCol: myCol,
        myRow: myRow
    },function(o){
        openXls();
    });

`

PHP:

$data=$_POST['data'];

更新1:事实上,最终的数组大小(行x列)接近1000.我已经尝试更改php.ini max_input_vars = 30000并运行httpd -k restart但没有效果。

data变量是myRow项的数组:

var data = new Array(myRow);

每个项目都包含75个元素:

data[i] = new Array(75);

所以你要生成一个大小为myRow x 75的数组:

data = [
  item_1: [ ... 75 items ... ]
  ...
  item_myRow: [ ... 75 items ... ]
]

在PHP中你应该得到相同的:

count($_POST['data']); // "myRow"
count($_POST['data'][0]); // 75

根据你的问题, myRow等于43。

更新

我建议用JSON打包数组:

data: JSON.stringify(data)

然后在PHP中解码它:

$data = json_decode($_POST['data'], true);

那么你当然只限于post_max_sizememory_limit

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM