0

我有一个表单,我在其中创建了许多项目数组:

<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)
)

ETC...

我正在使用 PHP 获取这些信息并通过电子邮件发送。我可以像这样得到这些数组之一:

$pickup1_dropoff1Items = $_POST['pickup1-dropoff1Items'];

我想按每个数组中$pickup1_dropoff1Items的“顺序”编号(即索引#4,即$pickup1-dropoff1Items[i][4])对数组进行排序。

这可以使用 PHP ksort() 来完成吗?有谁知道如何使用 PHP 对这样的数组进行排序?

谢谢!

4

2 回答 2

1

对于像这样对复杂数组进行排序,您可以使用usort()“使用用户定义的比较函数按值对数组进行排序”之类的东西。

有关更多信息,请参见 php.net 上的示例。

于 2013-06-15T20:33:06.640 回答
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.

于 2013-06-15T20:51:40.340 回答