【问题标题】:help me with php array sorting帮我进行php数组排序
【发布时间】:2011-07-19 18:56:44
【问题描述】:

我有这个数组

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

我想将数组修剪/排序成这样

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

【问题讨论】:

  • 我不得不问 - 你可以如此轻松地制作一个新数组有什么意义? (除非这是家庭作业)。

标签: php arrays sorting trim


【解决方案1】:

这个问题有点含糊;听起来你在问如何过滤掉不包含数字的元素,而提供的$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);

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

【讨论】:

  • 你太棒了。我只是有另一种解决方案,但它比你的要长。 :-)
  • 注意ctype_alpha() 的共同点
【解决方案2】:

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
)

【讨论】:

    【解决方案3】:
     $arr = array('test1', 'test', 'test3', 'var1', 'var5', 'var');
     $arr = array($arr[1], $arr[5]);
    

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

    【讨论】:

    • 我也喜欢您的解决方案,但我的编程水平高于此。 :-)
    • @Quy - 我当然没有任何侮辱的意思,但你的问题并没有太多继续下去的意思。我们知道您拥有什么以及您想要什么。您没有提到您试图消除所有带有数字的值。作为 5 天的会员,没有办法知道你的编程水平是什么。将来,更具体、更详细的问题将更有可能吸引您正在寻找的答案。
    【解决方案4】:
    $arr = array_unique(array_map('rtrim',$arr,array_fill(1,count($arr),'0123456789')));
    

    【讨论】:

      猜你喜欢
      • 2011-06-22
      • 1970-01-01
      • 2010-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-28
      相关资源
      最近更新 更多