如何根据另一个数组对已定义的数组进行排序?在我们的CMS中,我们有一个表单,它使用jQuery可排序小部件对表单中的行进行排序。最初使用多维数组创建表单行。保存后,数据将保存在序列化数组中。因此,无论何时对行进行排序并保存,数据都会以“排序”顺序保存,这就是应该如何排序的。我们遇到的问题是表单仍然按原始数组的顺序输出,而不是保存的排序数组。
是否有办法按保存的排序数组的顺序对原始数组进行排序?
以下是原始数组和顺序的外观:
Array
(
[group-1] => Array
(
[fields] => Array
(
[name] => Array
(
[type] => text
[name] => Full Name
)
[email-address] => Array
(
[type] => text
[name] => Email Address
)
)
)
[group-2] => Array
(
[fields] => Array
(
[address] => Array
(
[type] => text
[name] => Address
)
)
)
[group-3] => Array
(
[fields] => Array
(
[city] => Array
(
[type] => text
[name] => City
)
[zip] => Array
(
[type] => text
[name] => Zip
)
)
)
)
这是已分类的已保存数据
Array
(
[group-3] => Array
(
[city] => Apples
[zip] => 12345
)
[group-1] => Array
(
[name] => Tigre Woodrow
[email-address] => email@email.com
)
[group-2] => Array
(
[address] => 1234 Anywhere Street
)
)
因此,从数组中,字段行是那里的组ID。是否有办法根据该组ID进行排序?
答案 0 :(得分:1)
以下评论in the usort documentation听起来可能对您有帮助。我会尝试尽快更新您的问题的代码,但它可能会推动您朝着正确的方向发展。
如果要根据另一个充当数组的数组对数组进行排序 优先级列表,您可以使用此功能。
<?php function listcmp($a, $b) { global $order; foreach($order as $key => $value) { if($a==$value) { return 0; break; } if($b==$value) { return 1; break; } } } $order[0] = "first"; $order[1] = "second"; $order[2] = "third"; $array[0] = "second"; $array[1] = "first"; $array[2] = "third"; $array[3] = "fourth"; $array[4] = "second"; $array[5] = "first"; $array[6] = "second"; usort($array, "listcmp"); print_r($array); ?>