簡體   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