我有一个表单,我正在创建一些项目数组:
<input type="hidden" value="Full/Double Mattress" name="pickup1-dropoff1Items[1][0]">
<input type="text" name="pickup1-dropoff1Items[1][1]">
<input type="hidden" value="20" name="pickup1-dropoff1Items[1][2]">
<input type="hidden" value="FMat" name="pickup1-dropoff1Items[1][3]">
<input type="hidden" value="1" name="pickup1-dropoff1Items[1][4]">
所以结构基本上是:
array(
array('title', quantity, price, 'shorthand', order),
array('title', quantity, price, 'shorthand', order)
)
等...
我使用PHP获取此信息并通过电子邮件发送。我可以这样得到其中一个数组:
$pickup1_dropoff1Items = $_POST['pickup1-dropoff1Items'];
我想在$pickup1_dropoff1Items
中按每个数组中的'order'数字(即索引#4,即$pickup1-dropoff1Items[i][4]
)对数组进行排序。
可以使用PHP ksort()完成吗?有没有人知道如何使用PHP对这样的数组进行排序?
谢谢!
答案 0 :(得分:1)
对于像这样的复杂数组的排序,您可以使用usort()
之类的东西,它“使用用户定义的比较函数按值对数组进行排序”。
有关详细信息,请参阅php.net上的示例。
答案 1 :(得分:1)
它没有经过测试,但我认为这可以满足您的需求:
// first create a new array of just the order numbers
// in the same order as the original array
$orders_index = array();
foreach( $pickup1_dropoff1Items as $item ) {
$orders_index[] = $item[4];
}
// then use a sort of the orders array to sort the original
// array at the same time (without needing to look at the
// contents of the original)
array_multisort( $orders_index, $pickup1_dropoff1Items );
这基本上是示例1:
http://www.php.net/manual/en/function.array-multisort.php
但是我们的$ar2
是一个数组数组而不是一个单值数组。此外,如果您需要对排序进行更多控制,您将看到可以在该URL上使用的选项示例:只需将它们添加到array_multisort
的参数列表中。