2012-03-20 97 views
1

我需要一种重新排列多维数组的方法。有没有简单的解决方案呢?我之前一直使用array_values来完成单个数组,但它不支持多维数组。带有多维数组的PHP array_values

我的阵列看起来像这样

Array 
(
    [2] => Array 
     (
      [text] => test 
     ) 

    [5] => Array 
     (
      [text] => test 
     ) 

    [8] => Array 
     (
      [text] => test 
     ) 

) 

我想它是

Array 
(
    [0] => Array 
     (
      [text] => test 
     ) 

    [1] => Array 
     (
      [text] => test 
     ) 

    [2] => Array 
     (
      [text] => test 
     ) 

) 
+0

如果我理解正确,你想按键排序,对不对?不删除数组键?或者,你是按个别“文本”项目排序? – pp19dd 2012-03-20 20:58:34

+0

可能重复? [你如何在PHP中重新索引数组](http://stackoverflow.com/questions/591094/how-do-you-reindex-an-array-in-php) – mseancole 2012-03-20 21:08:23

+0

可能的重复[Array \ _values from multidimensional array ](http://stackoverflow.com/questions/9694072/array-values-from-multidimensional-array) – azerafati 2017-04-04 11:25:58

回答

0

使用ksort功能

+1

虽然这可能在理论上回答这个问题,[这将是更可取的](http://meta.stackexchange.com/ q/8259)在这里包括答案的基本部分,并提供参考链接。 – 2012-03-22 12:08:06

0

我怕你正在使用array_values()走错了路。尝试:

$yourArray = array_values($yourArray); 
0

上做一个array_merge()我想你需要以下:

$results = $your_array; 
$tmp = array(); 
foreach ($result as $r) 
{ 
    $tmp[]=$r; 
} 
$results= $tmp; 

祝你好运,

+1

这正是'array_values()'。 – 2012-03-20 21:02:28

+1

我喜欢写作,但你是对的。 – 2012-03-20 21:07:40

2

array_values作品对我来说很好,能够产生你想要的结果。

虽然有点难以分辨,因为所有数组元素都是相同的,但要确保将array_values的返回值正确地分配给新变量。

+0

是的,非常确定array_values是如何工作的 – 2014-03-13 10:58:47

0

您可以使用带自定义回调的usort,总是返回0,这将不会重新排列数组。

usort($array, function($a, $b) { return 0; });