按顺序放置数组变量

时间:2017-07-21 09:38:38

标签: php arrays

这是我的数组:

    [a] => apple
    [b] => banana
    [c] => Array
    (
        [2] => x
        [4] => y
        [6] => z
    )

我正在寻找一种方法将[c]数组变量置于“顺序”中。制作我的阵列,看起来像这样:

    [a] => apple
    [b] => banana
    [c] => Array
(
        [1] => x
        [2] => y
        [3] => z
)

有没有办法在没有自己创建新功能的情况下做到这一点?

3 个答案:

答案 0 :(得分:4)

尝试重新分配c值:

$data['c'] = array_values($data['c']);

它会重新索引c数组,但索引将以0开头。如果您真的想从0开始,请尝试:

$data['c'] = array_combine(range(1, count($data['c'])), array_values($data['c']))

答案 1 :(得分:2)

幸运的是,PHP为array sorting提供了许多功能,您不必再编写另一个功能。

尝试sort($a['c'])(假设您的数组存储在$ a变量中)。

$a = array(
    'a' => 'apple',
    'b' => 'banana',
    'c' => array(
        '1' => 'x',
        '2' => 'y',
        '3' => 'z',
    ),
);

sort($a['c']);
print_r($a);

输出:

Array
(
    [a] => apple
    [b] => banana
    [c] => Array
        (
            [0] => x
            [1] => y
            [2] => z
        )
)

如果您不需要对$a['c']的内容进行排序,只想重新编制索引(让它具有以0开头的数字连续键),那么array_values()就是它所需要的一切:

$a['c'] = array_values($a['c']);

答案 2 :(得分:1)

如果您不知道需要对多少个数组进行排序,请尝试以下方法:

$testarr = ['a' => 'apple', 'b' => 'banana', 'c' => ['x', 'y', 'z']];

foreach ($testarr as $key => $item) {
    if (is_array($item)) { $arr[$key] = array_values($item); }
    // if (is_array($item)) { $arr[$key] = asort($item); } // use asort() if you want to keep subarray keys
}