仅数组按键数字顺序的值

时间:2013-04-19 12:03:03

标签: php

我有一个这样的数组:

8:16, 9:8, 10:11, 11:5, 12:5, 13:13, 14:42

我希望它是:

0:16, 1:8, 2:11 ....
PHP中的

我知道我可以做自己的功能。但我认为它应该是内置的。

我试过了:array_values

5 个答案:

答案 0 :(得分:3)

这个功能应该可以解决问题:

$array = array_values($array);

请参阅:http://php.net/array_values

答案 1 :(得分:1)

请尝试这个我认为你的确切要求。

$arr = array('8:16', '9:8','10:11');

$i=0;
foreach($arr as $val){

    $arr1 = explode(':',$val);
    $arr2[] = $i.":".$arr1[1];
    $i++;
}
print_r($arr2);

答案 2 :(得分:0)

您可以使用natsort()

Documentation

答案 3 :(得分:0)

使用

array_values($yourArray);

我认为它应该可以正常运作。

答案 4 :(得分:0)

我认为@Praveenkalal怀疑你的意思,但我会添加另一种选择:

$i = 0;
array_walk($array, function(&$v) use(&$i) {
  $v = preg_replace('/\d+:(\d+)/', ($i++).':$1', $v);
});

run code

或者,如果你的数组已被零索引,就像我们假设这样可以工作:

foreach($array as $key => &$val)
  $val = preg_replace('/\d+:(\d+)/', $key.':$1', $val);

run code


数组......有趣的趣味

只是为了澄清 - 没有内置函数,因为你正在做的事情太具体了 - 如果你的数组值是关键的:值对那么通常你已经将它们映射到一个数组 - 这就是为什么我们所有人认为array_values就足够了。

例如,如果您的数据格式如下:

$array = array(
  8  => 16, 
  9  => 8, 
  10 => 11,
 ...
);

您可以使用全部的php内部功能。