For example:array('C', 'B', 'A', 'D', 'E');
array('good' => 'C', 'B', 'oh' => 'A', 'D', 'do' => 'E');要掉换C 和 A 整个健-值对的位置, 现在我用替换法实现的, 有内置函数一步实现这功能吗?如
array_exchange($key1, $key2, $subject) ;
array_exchange('A', 'B', $subject)
array_exchange('good', 'oh', $subject) 结果
array('A', 'B', 'C', 'D', 'E');
array( 'oh' => 'A', 'B','good' => 'C', 'D', 'do' => 'E');
array('good' => 'C', 'B', 'oh' => 'A', 'D', 'do' => 'E');要掉换C 和 A 整个健-值对的位置, 现在我用替换法实现的, 有内置函数一步实现这功能吗?如
array_exchange($key1, $key2, $subject) ;
array_exchange('A', 'B', $subject)
array_exchange('good', 'oh', $subject) 结果
array('A', 'B', 'C', 'D', 'E');
array( 'oh' => 'A', 'B','good' => 'C', 'D', 'do' => 'E');
PHP natcasesort() 函数PHP Array 函数
定义和用法natcasesort() 函数用不区分大小写的自然顺序算法对给定数组中的元素排序。natcasesort() 函数实现了“自然排序”,即数字从 1 到 9 的排序方法,字母从 a 到 z 的排序方法,短者优先,该函数不区分大小写。数组的索引与单元值保持关联。如果成功,则该函数返回 TRUE,否则返回 FALSE。
语法natcasesort(array)参数 描述
array 必需。规定要进行排序的数组。
提示和注释提示:natcasesort() 是 natsort() 函数 的不区分大小写字母的版本。
例子<?php
$temp_files = array("temp15.txt","Temp10.txt",
"temp1.txt","Temp22.txt","temp2.txt");natsort($temp_files);
echo "Natural order: ";
print_r($temp_files);
echo "<br />";natcasesort($temp_files);
echo "Natural order case insensitve: ";
print_r($temp_files);
?>输出:Natural order:
Array
(
[0] => Temp10.txt
[1] => Temp22.txt
[2] => temp1.txt
[4] => temp2.txt
[3] => temp15.txt
)Natural order case insensitve:
Array
(
[2] => temp1.txt
[4] => temp2.txt
[0] => Temp10.txt
[3] => temp15.txt
[1] => Temp22.txt
)
1,首先按照值 用自然排序法的方式进行排序
2,排序完成后遍历原来没有排序的数组,用inarray判断并重写键名就好了.
如果你认为我的思路不好,你就看看所有的array操作函数吧,或许对你有帮助
http://www.w3school.com.cn/php/php_ref_array.asp
php 的数组并不是严格意义上的数组,他只是个散列表
所以楼主的需求并无什么必要
OK, 唠叨所说, 一楼我这样故意假设按顺序去排序是为让大家明白我的目的,
但有些异义, 我的需求并不是要排序, 再看另一个数组,
array(
'preprocess' => 'user_check',
'footer' => 'web_footer',
'left' => 'navigation_bar',
'centre' => array('content_container', 'subject_list'),
'header' => 'top_menu',
'finish' => 'free',
//something more ...
//...
);//这个数组, 现在我要掉换header和footer二项,
//它们并没有排序的必要, 也没必要重打造一个数组//大家认为呢 。。
我看例子,LZ要的就是数组的顺序吧??【不是指排序】============
如果没理解错
曾经试图用类似方法,php中模拟维护一个链表,但是没有找到方法……,缺乏专研精神,果断放弃了
function array_exchange($arg1, $arg2, $arr){
$k = array_keys($arr);
$v = array_values($arr);
$arg1 = array_search($arg1, $k);
$arg2 = array_search($arg2, $k);
list($k[$arg2], $k[$arg1]) = array($k[$arg1], $k[$arg2]);
list($v[$arg2], $v[$arg1]) = array($v[$arg1], $v[$arg2]);
return array_combine($k, $v);
}
function array_exchange($key1, $key2, $arr) { $val1 = $arr[$key1];
$val2 = $arr[$key2];
$trans = array_flip($arr); //反转, 换健
$trans[$val1] = $key2;
$trans[$val2] = $key1;
$arr = array_flip($trans); //反转, 换值
$arr[$key1] = $val1;
$arr[$key2] = $val2;
return $arr;
}
array_exchange是数组置换的意思,
不是array_sort, 也不是array_order怎么有人理解成排序, 费解。