帮助我进行php数组排序

时间:2011-07-19 18:56:45

标签: php arrays sorting trim

我有这个数组

$arr = array('test1', 'test', 'test3', 'var1', 'var5', 'var');

我希望将数组修剪/排序为这样

$arr = array('test', 'var');

4 个答案:

答案 0 :(得分:2)

这个问题有点模糊;听起来像是在问你如何过滤掉不包含数字的元素,而提供的$arr只是一个例子。在这种情况下,您可以执行以下操作:

$arr = array('test1', 'test', 'test3', 'var1', 'var5', 'var');

function filter($element)
{
  if (ctype_alpha($element)) return $element;
}

$output = array_filter($arr, 'filter');

如果您的阵列发生变化,这也会有效。如果您需要按字母顺序对结果进行排序,则:

natcasesort($output);

我可能错了;在这种情况下,这有点矫枉过正。

答案 1 :(得分:1)

array_splice()的几次调用会执行它,但它们不能嵌套,因为它需要数组引用,并且不接受函数调用的输出作为输入参数。

$arr = array('test1', 'test', 'test3', 'var1', 'var5', 'var');
array_splice($arr, 0, 1);
array_splice($arr, 1, 3);

print_r($arr);
Array
(
    [0] => test
    [1] => var
)

答案 2 :(得分:1)

 $arr = array('test1', 'test', 'test3', 'var1', 'var5', 'var');
 $arr = array($arr[1], $arr[5]);

如果项目位置一直移动,可变性的可能性很大,但根据您发布的内容,我认为这是最快的。

答案 3 :(得分:1)

$arr = array_unique(array_map('rtrim',$arr,array_fill(1,count($arr),'0123456789')));