如何将数字数组的键与字母键分开?

时间:2016-07-15 02:43:08

标签: php arrays

这是我的代码:

$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
*/

如您所见,我需要重新索引所有数组的项目,并将数字项目放在数组的开头。这可能吗?

2 个答案:

答案 0 :(得分:2)

  

如何将数字数组键与字母键分开?

最简单的方法是按键对数组进行排序,使用ksort来修改数组。使用SORT_STRING标志获取您要搜索的结果:

ksort($myArr, SORT_STRING);

Live demo

答案 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
)