如何重新索引多维数组的所有子数组元素?
Posted
技术标签:
【中文标题】如何重新索引多维数组的所有子数组元素?【英文标题】:How to re-index all subarray elements of a multidimensional array? 【发布时间】:2012-05-16 14:18:07 【问题描述】:问题是如何重置密钥,例如对于数组:
Array (
[1_Name] => Array (
[1] => leo
[4] => NULL
)
[1_Phone] => Array (
[1] => 12345
[4] => 434324
)
)
重置为:
Array (
[1_Name] => Array (
[0] => leo
[1] => NULL
)
[1_Phone] => Array (
[0] => 12345
[1] => 434324
)
)
【问题讨论】:
查看这个答案:***.com/questions/5943149/… 【参考方案1】:重置数组中所有数组的键:
$arr = array_map('array_values', $arr);
如果您只想重置第一级数组键,请使用 array_values()
而不使用 array_map
。
【讨论】:
由于某种原因没有重置我的数组的键,只能使用array_values
函数。
@SSH 您是否在 数组数组 上使用了它,正如这里所说的那样?
不,这是问题所在,我认为这应该是“重置数组元素的键”,它没有。
你不需要使用array_map:$ret = array_values($ret);足以重置数字键
我不知道是否记录了使用 array_values 重置值,但应该记录。这确实有助于减少我写的行数:)【参考方案2】:
$array[9] = 'Apple';
$array[12] = 'Orange';
$array[5] = 'Peach';
$array = array_values($array);
通过这个函数你可以重置你的数组
$array[0] = 'Apple';
$array[1] = 'Orange';
$array[2] = 'Peach';
【讨论】:
【参考方案3】:使用array_values
重置密钥
foreach($input as &$val)
$val = array_values($val);
http://php.net/array_values
【讨论】:
【参考方案4】:在这里您可以看到deceze 提供的方式与简单的array_values
方式之间的区别:
数组:
$array['a'][0] = array('x' => 1, 'y' => 2, 'z' => 3);
$array['a'][5] = array('x' => 4, 'y' => 5, 'z' => 6);
$array['b'][1] = array('x' => 7, 'y' => 8, 'z' => 9);
$array['b'][7] = array('x' => 10, 'y' => 11, 'z' => 12);
以deceze
方式,这是您的输出:
$array = array_map('array_values', $array);
print_r($array);
/* Output */
Array
(
[a] => Array
(
[0] => Array
(
[x] => 1
[y] => 2
[z] => 3
)
[1] => Array
(
[x] => 4
[y] => 5
[z] => 6
)
)
[b] => Array
(
[0] => Array
(
[x] => 7
[y] => 8
[z] => 9
)
[1] => Array
(
[x] => 10
[y] => 11
[z] => 12
)
)
)
如果你只使用array_values
函数,这是你的输出:
$array = array_values($array);
print_r($array);
/* Output */
Array
(
[0] => Array
(
[0] => Array
(
[x] => 1
[y] => 2
[z] => 3
)
[5] => Array
(
[x] => 4
[y] => 5
[z] => 6
)
)
[1] => Array
(
[1] => Array
(
[x] => 7
[y] => 8
[z] => 9
)
[7] => Array
(
[x] => 10
[y] => 11
[z] => 12
)
)
)
【讨论】:
【参考方案5】:$result = ['5' => 'cherry', '7' => 'apple'];
array_multisort($result, SORT_ASC);
print_r($result);
数组([0] => 苹果 [1] => 樱桃)
//...
array_multisort($result, SORT_DESC);
//...
数组([0] => 樱桃 [1] => 苹果)
【讨论】:
【参考方案6】:为此存在 PHP 原生函数。见http://php.net/manual/en/function.reset.php
只需这样做:mixed reset ( array &$array )
【讨论】:
请务必阅读您链接到的手册;reset
做别的事情。
它只是将指针移动到数组的第一个元素。在默认状态 0、1、2...N 中删除键的 Topicstarter 搜索方式。以上是关于如何重新索引多维数组的所有子数组元素?的主要内容,如果未能解决你的问题,请参考以下文章