我有一個這樣的陣列:難陣列排序順序
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