我有一个这样的阵列:难阵列排序顺序
array(
0 => array("src" => "foo-21.gif"),
1 => array("src" => "bar-short.gif"),
2 => array("src" => "baz-1.gif"),
3 => array("src" => "whatever.gif"),
4 => array("src" => "some-long.gif"),
5 => array("src" => "xyz.gif"),
);
在src
元素的值可以是任何东西。
但是,只有最大。一个元素包含short
(这里是元素1),并且只有最大值。一个包含long
的元素(这里是元素4)。他们可以在阵列中的任何地方。或根本不存在。
我现在需要做的是:
- 含
short
src
元素必须首先如果存在 - conaining
long
元素必须是最后一个(如果存在) - 中不之间的顺序物。
因此,例如是这样的:
array(
0 => array("src" => "bar-short.gif"), // containing "short" = first
1 => array("src" => "foo-21.gif"),
2 => array("src" => "baz-1.gif"),
3 => array("src" => "whatever.gif"),
4 => array("src" => "xyz.gif"),
5 => array("src" => "some-long.gif"), // containing "long" = last
);
我将如何做到这一点? usort
在这里似乎不是一个好主意。
编辑以用strpos()替换preg_match()。每个人都知道,因此爱'(?!regex)'。 – scribble 2009-11-21 06:50:26
不错!完全是我所需要的! – Max 2009-11-21 07:35:26