汗,对数组操作太弱了,资料到处翻,还是只有一维数组的方便排序方法,却找不到二维的.
MATLAB用久了才知道PHP对数的操作很弱.-_-!!
一个二维数组:
$aclass[0]["acid"] = 1;
$aclass[0]["acorder"] = 3;
$aclass[0]["acname"] = "入门指南";
$aclass[0]["acinfo"] = "PHP基础知识";
$aclass[1]["acid"] = 2;
$aclass[1]["acorder"] = 1;
$aclass[1]["acname"] = "应用技巧";
$aclass[1]["acinfo"] = "PHP编程技巧总结";
$aclass[2]["acid"] = 3;
$aclass[2]["acorder"] = 2;
$aclass[2]["acname"] = "高级应用";
$aclass[2]["acinfo"] = "PHP程序的高级应用";
问题一: 问题很简单,怎么按照acorder升序和降序来排列这几个数组,值不变索引不变.
print_r的结果应该是:
Array
(
[0] => Array
(
[acid] => 2
[acorder] => 1
[acname] => 应用技巧
[acinfo] => PHP编程技巧总结
)
[1] => Array
(
[acid] => 3
[acorder] => 2
[acname] => 高级应用
[acinfo] => PHP程序的高级应用
)
[2] => Array
(
[acid] => 1
[acorder] => 3
[acname] => 入门指南
[acinfo] => PHP基础知识
)
}
有没有其它详细的排序方案?自定义的多维数组排序怎么做?给个资料参考也行,我喜欢自己看书理解.
问题二: 如何取得[acid] => 1的那个数组的全部或部分元素?比如我要取得[acid] => 1的那个数组[acname] 索引所指向的值,怎么做简单效率高?
两个问题100分,晚上回来结帖子,郁闷,今天访问老出错.可用分竟然不增加,昏死.
名次排列
$grade = array("score" => array(70, 95, 70.0, 60, "70"),
"name" => array("Zhang San", "Li Si", "Wang Wu",
"Zhao Liu", "Liu Qi"));
array_multisort($grade["score"], SORT_NUMERIC, SORT_DESC,
// 将分数作为数值,由高到低排序
$grade["name"], SORT_STRING, SORT_ASC);
// 将名字作为字符串,由小到大排序
var_dump($grade);
上例输出结果如下: array(2) {
["score"]=>
array(5) {
[0]=>
int(95)
[1]=>
string(2) "70"
[2]=>
float(70)
[3]=>
int(70)
[4]=>
int(60)
}
["name"]=>
array(5) {
[0]=>
string(5) "Li Si"
[1]=>
string(6) "Liu Qi"
[2]=>
string(7) "Wang Wu"
[3]=>
string(9) "Zhang San"
[4]=>
string(8) "Zhao Liu"
}
MATLAB用久了才知道PHP对数的操作很弱.-_-!!
一个二维数组:
$aclass[0]["acid"] = 1;
$aclass[0]["acorder"] = 3;
$aclass[0]["acname"] = "入门指南";
$aclass[0]["acinfo"] = "PHP基础知识";
$aclass[1]["acid"] = 2;
$aclass[1]["acorder"] = 1;
$aclass[1]["acname"] = "应用技巧";
$aclass[1]["acinfo"] = "PHP编程技巧总结";
$aclass[2]["acid"] = 3;
$aclass[2]["acorder"] = 2;
$aclass[2]["acname"] = "高级应用";
$aclass[2]["acinfo"] = "PHP程序的高级应用";
问题一: 问题很简单,怎么按照acorder升序和降序来排列这几个数组,值不变索引不变.
print_r的结果应该是:
Array
(
[0] => Array
(
[acid] => 2
[acorder] => 1
[acname] => 应用技巧
[acinfo] => PHP编程技巧总结
)
[1] => Array
(
[acid] => 3
[acorder] => 2
[acname] => 高级应用
[acinfo] => PHP程序的高级应用
)
[2] => Array
(
[acid] => 1
[acorder] => 3
[acname] => 入门指南
[acinfo] => PHP基础知识
)
}
有没有其它详细的排序方案?自定义的多维数组排序怎么做?给个资料参考也行,我喜欢自己看书理解.
问题二: 如何取得[acid] => 1的那个数组的全部或部分元素?比如我要取得[acid] => 1的那个数组[acname] 索引所指向的值,怎么做简单效率高?
两个问题100分,晚上回来结帖子,郁闷,今天访问老出错.可用分竟然不增加,昏死.
名次排列
$grade = array("score" => array(70, 95, 70.0, 60, "70"),
"name" => array("Zhang San", "Li Si", "Wang Wu",
"Zhao Liu", "Liu Qi"));
array_multisort($grade["score"], SORT_NUMERIC, SORT_DESC,
// 将分数作为数值,由高到低排序
$grade["name"], SORT_STRING, SORT_ASC);
// 将名字作为字符串,由小到大排序
var_dump($grade);
上例输出结果如下: array(2) {
["score"]=>
array(5) {
[0]=>
int(95)
[1]=>
string(2) "70"
[2]=>
float(70)
[3]=>
int(70)
[4]=>
int(60)
}
["name"]=>
array(5) {
[0]=>
string(5) "Li Si"
[1]=>
string(6) "Liu Qi"
[2]=>
string(7) "Wang Wu"
[3]=>
string(9) "Zhang San"
[4]=>
string(8) "Zhao Liu"
}
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/1758/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2009-5-5 19:22
评论列表