
正文
php输入数据提交排序 php选择排序代码
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
PHP使用array_multisort对多个数组或多维数组进行排序
PHP中array_multisort可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。
关联(string)键名保持不变,但数字键名会被重新索引。
输入数组被当成一个表的列并以行来排序——这类似于
SQL
的
ORDER
BY
子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话就按照下一个输入数组中相应值的大小来排序,依此类推。——这句话是理解此函数用法的关键。
第一个参数必须是一个数组。接下来的每个参数可以是数组或者是下面列出的排序标志。
排序顺序标志:
■SORT_ASC
-
按照上升顺序排序
■SORT_DESC
-
按照下降顺序排序
排序类型标志:
■SORT_REGULAR
-
将项目按照通常方法比较
■SORT_NUMERIC
-
将项目按照数值比较
■SORT_STRING
-
将项目按照字符串比较
每个数组之后不能指定两个同类的排序标志。每个数组后指定的排序标志仅对该数组有效
-
在此之前为默认值
SORT_ASC
和
SORT_REGULAR。
看看两个实际例子:
1、一次对多个数组进行排序:
复制代码
代码如下:
$num1
=
array(3,
5,
4,
3);
$num2
=
array(27,
50,
44,
78);
array_multisort($num1,
SORT_ASC,
$num2,
SORT_DESC);
print_r($num1);
print_r($num2);
//result:
Array
(
[0]
=
3
[1]
=
3
[2]
=
4
[3]
=
5
)
Array
(
[0]
=
78
[1]
=
27
[2]
=
44
[3]
=
50
)
2、对多维数组(以二位数组为例)进行排序:
复制代码
代码如下:
$arr
=
array(
'0'
=
array(
'num1'
=
3,
'num2'
=
27
),
'1'
=
array(
'num1'
=
5,
'num2'
=
50
),
'2'
=
array(
'num1'
=
4,
'num2'
=
44
),
'3'
=
array(
'num1'
=
3,
'num2'
=
78
)
);
foreach
(
$arr
as
$key
=
$row
){
$num1[$key]
=
$row
['num1'];
$num2[$key]
=
$row
['num2'];
}
array_multisort($num1,
SORT_ASC,
$num2,
SORT_DESC,
$arr);
print_r($arr);
//result:Array([0]=Array([num1]=3
[num2]=78)
[1]=Array([num1]=3
[num2]=27)
[2]=Array([num1]=4
[num2]=44)
[3]=Array([num1]=5
[num2]=50))
总结:
这里的重点就是,先把要排序的key存到一个一维数组中,然后就可以使用array_multisort()这个函数,将数组按照key进行排序php输入数据提交排序了,当然,这里的排序php输入数据提交排序你完全可以不适用array_multisort()这个函数,仅仅通过foreach遍历也能达到这个效果,但是既然php开发者给php输入数据提交排序我们提供了更好的办法,我们就可以省去不必要的麻烦了。
相关问答
Q1: 输入5个数,按从大到小排序,用php动态页面实现。
p请输入要排序的数据/p
form id="form1" name="form1" method="post" action=""
input name="textfield" type="text" id="textfield" size="15" maxlength="15" /
-
input name="textfield2" type="text" id="textfield2" size="15" /
-
input name="textfield3" type="text" id="textfield3" size="15" /
-
input name="textfield4" type="text" id="textfield4" size="15" /
-
input name="textfield5" type="text" id="textfield5" size="15" /
input type="submit" name="button" id="button" value="提交" /
/form
?
if(isset($_POST['button'])){
echo "排序后的数据如下所示:";
echo 'br/';
$array=array(
"0"=$_POST['textfield'],
"1"=$_POST['textfield2'],
"2"=$_POST['textfield3'],
"3"=$_POST['textfield4'],
"4"=$_POST['textfield5'],);//把数字存到数组中
sort($array);//php函数排序从小到大
foreach($array as $key = $value){
echo $value;//循环输出值
echo 'br/';
}
}
?
Q2: php测试数组怎么排序?
1、在test.php文件内,使用header设置test.php执行的编码为utf8,避免输出中文的时候出现乱码。
2、在test.php文件内,创建一个测试的数组,例如,定义一个分类的数组,其对应的索引值分别为0,4,8。
3、在test.php文件内,使用array_values()方法将上一步的数据重新排序,并且从0开始,把重新排序的数组保存在$result变量中。
4、在test.php文件内,使用foreach方法遍历数组,其中$k为索引值,$v为索引值对应的数组值。
5、在test.php文件内,使用echo方法输出数组中的索引值和对应的数组值即可。
Q3: 1使用PHP的排序函数对以下中的数组排序。 2.在表单上由用户输入学号,姓名和成绩这三列的数据,一共5行。
费了一段时间php输入数据提交排序,总算完成这个作业,也算是一种锻炼吧,以下是代码,虽然感觉效率比较低,为什么不用数据库呢php输入数据提交排序?
?php
header('Content-type:text/html;charset=utf-8');
//2维数组排序
function sysSortArray($ArrayData, $KeyName1, $SortOrder1 = "SORT_ASC", $SortType1 = "SORT_REGULAR")
{
if (!is_array($ArrayData)) {
return $ArrayData;
}
// Get args number.
$ArgCount = func_num_args();
// Get keys to sort by and put them to SortRule array.
for ($I = 1; $I $ArgCount; $I++) {
$Arg = func_get_arg($I);
if (!eregi("SORT", $Arg)) {
$KeyNameList[] = $Arg;
$SortRule[] = '$' . $Arg;
} else {
$SortRule[] = $Arg;
}
}
// Get the values according to the keys and put them to array.
foreach ($ArrayData as $Key = $Info) {
foreach ($KeyNameList as $KeyName) {
${$KeyName}[$Key] = $Info[$KeyName];
}
}
// Create the eval string and eval it.
$EvalString = 'array_multisort(' . join(",", $SortRule) . ',$ArrayData);';
eval($EvalString);
return $ArrayData;
}
$keys = array('stu_no','name','price');
//输出表格
echo "请输入需要排序的数据:br";
echo "form method=post";
echo "table";
echo "trtd学号/tdtd姓名/tdtd成绩td/tr";
for ($row = 1; $row 6; $row++) {
echo "tr";
for ($col = 1; $col 4; $col++) {
echo "tdinput type='text' name='stu_$row" . "_$col' size='10'/td";
}
echo "/tr";
}
echo "/table";
echo "input type='submit' name='bt' value='提交'";
echo "/form";
//转换数组
if (isset($_POST['bt'])) {
for ($row = 1; $row 6; $row++)
for ($col = 1; $col 4; $col++) {
$key = $keys[$col-1];
$stu[$row][$key] = $_POST['stu_' . $row . '_' . $col];
}
echo 'pre';
print_r($stu);
echo '/pre';
}
//排序
$temp = sysSortArray($stu,'price',"SORT_ASC");
echo 'pre';
print_r($temp);
echo '/pre'
?
Q4: PHP实现插入排序算法
插入排序(Insertion Sort) 是一种较稳定 简单直观的排序算法 插入排序的工作原理 是通过构建有序序列 对于未排序的数据 在有序序列中从后向前扫描 找到合适的位置并将其插入 插入排序 在最好情况下 时间复杂度为O(n);在最坏情况下 时间复杂度为O(n );平均时间复杂度为O(n )
插入排序示例图
/**
* 数据结构与算法(PHP实现) - 插入排序(Insertion Sort)。Tw.WiNGwit
*
* @author 创想编程(TOPPHP.ORG)
* @copyright Copyright (c) 2013 创想编程(TOPPHP.ORG) All Rights Reserved
* @license /licenses/mit-license.php MIT LICENSE
* @version 1.0.0 - Build20130613
*/
class InsertionSort {
/**
* 需要排序的数据数组。
*
* @var array
*/
private $data;
/**
* 数据数组的长度。
*
* @var integer
*/
private $size;
/**
* 数据数组是否已排序。
*
* @var boolean
*/
private $done;
/**
* 构造方法 - 初始化数据。
*
* @param array $data 需要排序的数据数组。
*/
public function __construct(array $data) {
$this-data = $data;
$this-size = count($this-data);
$this-done = FALSE;
}
/**
* 插入排序。
*/
private function sort() {
$this-done = TRUE;
for ($i = 1; $i $this-size; ++$i) {
$current = $this-data[$i];
if ($current $this-data[$i - 1]) {
for ($j = $i - 1; $j = 0 $this-data[$j] $current; --$j) {
$this-data[$j + 1] = $this-data[$j];
}
$this-data[$j + 1] = $current;
}
}
}
/**
* 获取排序后的数据数组。
*
* @return array 返回排序后的数据数组。
*/
public function getResult() {
if ($this-done) {
return $this-data;
}
$this-sort();
return $this-data;
}
}
?
示例代码 1
2
3
4
$insertion = new InsertionSort(array(9, 1, 5, 3, 2, 8, 6));
echo '
', print_r($insertion-getResult(), TRUE), '
'; lishixinzhi/Article/program/PHP/201311/20783
Q5: PHP数据处理,排序问题
1. 服务器端排序, 你的方法是其中之一
2. 浏览器端排序, 可以用jsp实现. 我曾经用jquery做过类似的功能, 挺简单的:
方法:
保存数据到二维表,
定义click事件:
按点击的字段排序, 按顺序生成每一行的html代码, 清空原来的html代码, 加入新生成的顺序html代码
php输入数据提交排序的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于php选择排序代码、php输入数据提交排序的信息别忘了在本站进行查找喔。







