我有一个包含子数组的子数组的大数组。
该计划是这样的:
$bigArray['apple'][] = array('shop1', 'Fruit', '7');
$bigArray['apple'][] = array('shop2', 'Fruit', '5');
$bigArray['pear'][] = array('shop2', 'Fruit', '3.5');
$bigArray['banana'][] = array('shop1', 'Fruit', '2');
所以在这种情况下
$bigArray['apple']
包含2个数组。
首先,我想从第3个参数(价格)对这个数组进行排序 按升序排列(最低价格到最高价格)所以当打印出来时 将显示:
'shop2', 'Fruit', '5' ->lowest price
'shop1', 'Fruit', '7'
第二件事是,我想按升序对整个数组$bigArray
进行排序
(最低价格到最高价格);现在,因为像$bigArray['apple']
这样的数组
已排序,仅在$bigArray
排序$bigArray['apple'][0]
第一个数组中排序
将被考虑因为[0]将是这个的最低价格
子数组,已经排序。
所以最后打印$bigArray
时会显示:
'shop1', 'Fruit', '2'
'shop2', 'Fruit', '3.5'
'shop2', 'Fruit', '5'
....
我一直在努力,但对我来说要复杂得多 使用多维关联数组。
谢谢。
答案 0 :(得分:1)
我认为这是您想要实现的目标的解决方案:
<?php
$bigArray['apple'][] = array('shop1', 'Fruit', '7');
$bigArray['apple'][] = array('shop2', 'Fruit', '5');
$bigArray['pear'][] = array('shop2', 'Fruit', '3.5');
$bigArray['banana'][] = array('shop1', 'Fruit', '2');
foreach ($bigArray as &$item) {
uasort($item, function($a, $b) {
if ($a[2] == $b[2]) {
return 0;
}
return ($a[2] < $b[2]) ? -1 : 1;
});
}
uasort($bigArray, function($a, $b) {
if ($a[0][2] == $b[0][2]) {
return 0;
}
return ($a[0][2] < $b[0][2]) ? -1 : 1;
});
foreach ($bigArray as $k => $v) {
foreach ($v as $item)
{
echo $k.': '.$item[0].' '.$item[1].' '.$item[2]."<br />";
}
}