我有一个表单,我正在创建一些项目数组:
<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'];
我想按每个数组中的"顺序"号(即索引#4,即$pickup1-dropoff1Items[i][4]
)对$pickup1_dropoff1Items
中的数组进行排序。
这可以使用PHP ksort()吗?有人知道如何使用PHP对这样的数组进行排序吗?
谢谢!
它没有经过测试,但我认为这将做你需要的:
// 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
的参数列表中。
对于像这样的复杂数组排序,您可以使用类似usort()
的东西,它"使用用户定义的比较函数按值对数组排序"。