如何在php中对多个数组进行排序

时间:2017-03-24 06:25:01

标签: php arrays sorting

我创建了一个带循环的

$i=0;
foreach($xml->xpath('//ns2:Soap_Model_SOAP_Hotel_Room') as $rooms)
{
  $room_details[$i]['room_name']=$rooms->name;
  $room_details[$i]['room_id']=$rooms->id;
  $room_details[$i]['room_price']=$rooms->price->value;
  $i++;
}

并使用另一个for循环调用此数组,但存储在数组中的id处于shuffle模式,我需要使用我的id的assoc模式排列整个数组

目前显示为



room id : 106556, room price : 22718.65, room name : Deluxe
room id : 106559, room price : 22718.65, room name : Deluxe
room id : 106557, room price : 22718.65, room name : Deluxe
room id : 106560, room price : 22718.65, room name : Deluxe
room id : 106558, room price : 22718.65, room name : Deluxe
room id : 106561, room price : 22718.65, room name : Deluxe
room id : 106562, room price : 31456.62, room name : Club
room id : 106565, room price : 31456.62, room name : Club
room id : 106563, room price : 31456.62, room name : Club
room id : 106566, room price : 31456.62, room name : Club
room id : 106564, room price : 31456.62, room name : Club
room id : 106567, room price : 31456.62, room name : Club




我需要用id对这个数组进行排序,怎么可能?

2 个答案:

答案 0 :(得分:0)

我建议将房间ID指定为密钥,然后ksort。排序后,要重置密钥,只需使用array_values。它会将其从0索引重置。

// assign using room id
foreach ($xml->xpath('//ns2:Soap_Model_SOAP_Hotel_Room') as $rooms) {
    $room_details[$rooms->id]['room_name'] = $rooms->name;
    $room_details[$rooms->id]['room_id'] = $rooms->id;
    $room_details[$rooms->id]['room_price'] = $rooms->price->value;
}
ksort($room_details); // sort by key
$room_details = array_values($room_details); // reassign keys

答案 1 :(得分:0)

好吧,您可以使用uasort函数,如果您想要比较数组元素的值,如果您想使用键(哪些是ID),您可以使用ksort checkout what functions,您可以使用它来排序数组并同时保持相同的密钥