Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.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 数据表按编号排序字段_Php_Jquery_Datatable - Fatal编程技术网

Php 数据表按编号排序字段

Php 数据表按编号排序字段,php,jquery,datatable,Php,Jquery,Datatable,我有一列表示我的中的货币值,我如何才能正确地对这些值排序,因为dataTable仅按第一个数字排序,例如: 9000,00 8000,00 5.454.043,00 4.454.043,00 当然应该是这样的: while(!$res->EOF){ ... // post only the 3 <td> position <td style='text-align: right;'>".number_format($value,2,',','.')."

我有一列表示我的中的货币值,我如何才能正确地对这些值排序,因为dataTable仅按第一个数字排序,例如:

9000,00

8000,00

5.454.043,00

4.454.043,00

当然应该是这样的:

while(!$res->EOF){
    ... // post only the 3 <td> position
   <td style='text-align: right;'>".number_format($value,2,',','.')."</td>
   ...
   $res->MoveNext();
}
5.454.043,00

4.454.043,00

9000,00

8000,00

我正在使用
number\u format
设置我的货币格式

php:

while(!$res->EOF){
    ... // post only the 3 <td> position
   <td style='text-align: right;'>".number_format($value,2,',','.')."</td>
   ...
   $res->MoveNext();
}
“.number\u格式($money,2,,,,,)。”

有什么问题,请便

谢谢


编辑:

while(!$res->EOF){
    ... // post only the 3 <td> position
   <td style='text-align: right;'>".number_format($value,2,',','.')."</td>
   ...
   $res->MoveNext();
}
作为@Mikhail的回答,试试这个,但是这个位置的列不再排序了

 ...
"aoColumnDefs": [
  { "sType": "numeric", "aTargets": [ 3 ] }
],
...

编辑2

再多一点代码:

php:

while(!$res->EOF){
    ... // post only the 3 <td> position
   <td style='text-align: right;'>".number_format($value,2,',','.')."</td>
   ...
   $res->MoveNext();
}
while(!$res->EOF){
…//只张贴3个位置
.number_格式($value,2,,,,,,,)
...
$res->MoveNext();
}
js数据表

var oTable = $('#example').dataTable({
                    "bJQueryUI": true,
                    "sScrollY": "225px",
                    "sScrollX": "100%",
                    "sScrollXInner": "100%",
                    "bDestroy" : true,
                    "bScrollCollapse": true,
                    "aoColumnDefs": [
                        { "sType": "numeric", "aTargets": [ 3 ] }
                    ],
                    "sDom": '<"H"Tfr>t<"F"ip>',
                    "oTableTools": {
                        "sSwfPath": "js/DataTables/extras/TableTools/media/swf/copy_cvs_xls_pdf.swf",
                        "sRowSelect": "single",
                        "aButtons": [
                                        {
                                            "sExtends": "xls",
                                            "sButtonText": "Excel"
                                        },
                                        {
                                            "sExtends": "print",
                                            "sButtonText": "Print"
                                        }
                                    ]
                    },
                    "aaSorting": [[ 0, "asc" ]],
                    "bPaginate": false
                });
var-oTable=$(“#示例”).dataTable({
“bJQueryUI”:没错,
“sScrollY”:“225px”,
“sScrollX”:“100%”,
“sScrollXInner”:“100%”,
是的,
“崩溃”:没错,
“aoColumnDefs”:[
{“sType”:“numeric”,“aTargets”:[3]}
],
“sDom”:“t”,
“可旋转工具”:{
“sSwfPath”:“js/DataTables/extras/TableTools/media/swf/copy_cvs_xls_pdf.swf”,
“sRowSelect”:“single”,
“阿布顿”:[
{
“性倾向”:“xls”,
“sButtonText”:“Excel”
},
{
“性倾向”:“打印”,
“sbuttonext”:“打印”
}
]
},
“aaSorting”:[[0,“asc”]],
“bPaginate”:错误
});

解决方案

我的解决方案是创建一个新列,该列的值不包含
number\u format
,就像隐藏一样。寻找别人的方式,我发现 现在,我可以格式化显示列中的任何内容。

简而言之,您可以使用:

natsort($array);

您需要指定该列为“数字”


祝你好运

在看不到更多代码的情况下,很难准确地确定要做什么,但它之所以能像现在这样运行,似乎是由于
number\u格式
功能。这将返回一个
字符串
,因此排序是正确的。在将其转换为字符串之前,需要执行排序。但要获得更深入的解释,您需要提供更深入的代码。

您需要将字符串转换回float,您可以为此定义自己的数据类型(未测试):


如您所见,数字的转换是通过将字符串乘以1来实现的,它不知道逗号或用作小数分隔符以外的任何东西的点。

yeap,但不起作用,不知道为什么,但列只是停止排序。将更新我的问题。其他列是否排序?你确定没有导致其他脚本无法执行的一般JS错误吗?没有,firebug中的aready测试,实际上排序发生了,但只有一行,所有其他的都停止了。好吧,我更新了代码,我只发布了几行,因为其他的事情我认为metter的代码不多。现在看一看,去掉数字_格式(正如我之前测试的那样),排序工作很完美,但这对我没有帮助。所以逗号是罪魁祸首?我认为“数字”可以处理这个问题。我会用逗号来代替句号,看起来它现在可以用了,可以做一些测试了。返回ReffTyes,见我的编辑,并考虑添加空细胞的情况。奇怪的是,他继续排序的第一个数字,如:第一:803.448,60秒,第二:68,00第三:461.404,58,第四:437.621,10。不知道我是否正确,但是,我只设置了现在测试的
{“sType”:“mynumeric”,“aTargets”:[3]}
应该可以工作,尽管我通常对日期进行设置。是否调用了比较函数?