这是我的数组:
[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
)
有没有办法在没有自己创建新功能的情况下做到这一点?
答案 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
}