这是我的代码:
$arr = array();
$arr[] = 1;
$arr['txt'] = 'something';
$arr['txt2'] = 'something2';
$arr[] = 2;
$arr[] = 3;
echo '<pre>';
print_r($arr);
/* output:
1
something
something2
2
3
*/
我正在尝试更改数组的顺序并生成此结果:
/* expected output:
1
2
3
something
something2
*/
如您所见,我需要重新索引所有数组的项目,并将数字项目放在数组的开头。这可能吗?
答案 0 :(得分:2)
如何将数字数组键与字母键分开?
最简单的方法是按键对数组进行排序,使用ksort
来修改数组。使用SORT_STRING
标志获取您要搜索的结果:
ksort($myArr, SORT_STRING);
答案 1 :(得分:1)
正确的语法是:
<?php
$arr = array();
$arr[] = 1;
$arr['txt'] = 'something';
$arr['txt2'] = 'something2';
$arr[] = 2;
$arr[] = 3;
echo '<pre>';
usort($arr, function($a, $b) {
if (is_float($a)) {
if ( is_float($b)) {
return $a - $b;
}
else
return -1;
}
elseif (is_float($b)) {
return 1;
}
else {
return strcmp($a, $b);
}
});
print_r($arr);
?>
输出
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => something
[4] => something2
)
<?php
$arr = array();
$arr[] = 1;
$arr['txt'] = 'something';
$arr['txt2'] = 'something2';
$arr[] = 2;
$arr[] = 3;
echo '<pre>';
usort($arr, SORT_STRING);
print_r($arr);
?>
输出
Array
(
[0] => 1
[1] => 2
[2] => 3
[txt] => something
[txt2] => something2
)