【发布时间】:2019-09-12 08:47:51
【问题描述】:
我有一个数组。
$majorEarning = array(
array(
'user_id' => 1,
'booking_id' => 2,
'price' => 30
),
array(
'user_id' => 2,
'booking_id' => 1,
'price' => 60
),
array(
'user_id' => 2,
'booking_id' => 6,
'price' => 10
),
array(
'user_id' => 1,
'booking_id' => 4,
'price' => 50
)
);
我需要像这样重新排序和重组它:-
Array
(
[0] => Array
(
[user_id] => 1
[booking_data] => Array
(
[0] => Array
(
[booking] => 2
[price] => 30
)
[1] => Array
(
[booking] => 4
[price] => 50
)
)
)
[1] => Array
(
[user_id] => 2
[booking_data] => Array
(
[0] => Array
(
[booking] => 1
[price] => 60
)
[1] => Array
(
[booking] => 6
[price] => 10
)
)
)
)
这是我的编码:-
$formattedEarning = array();
foreach($majorEarning as $keyEarn => $row)
{
if(!empty($formattedEarning))
{
$return = myfunction($formattedEarning, 'user_id', $row['user_id']);
if($return)
{
$earning = array();
$earning['booking'] = $row['booking_id'];
$earning['price'] = $row['price'];
$formattedEarning[$return]['booking_data'][] = $earning;
}
else
{
$earning = array();
$earningChild = array();
$earning['user_id'] = $row['user_id'];
$earningChild['booking'] = $row['booking_id'];
$earningChild['price'] = $row['price'];
$earning['booking_data'][] = $earningChild;
$formattedEarning[] = $earning;
}
}
else
{
$earning = array();
$earningChild = array();
$earning['user_id'] = $row['user_id'];
$earningChild['booking'] = $row['booking_id'];
$earningChild['price'] = $row['price'];
$earning['booking_data'][] = $earningChild;
$formattedEarning[] = $earning;
}
}
print_r($formattedEarning);
function myfunction($products, $field, $value)
{
foreach($products as $key => $product)
{
if ( $product[$field] === $value )
return $key;
}
return false;
}
但是数组是这样来的:-
Array
(
[0] => Array
(
[user_id] => 1
[booking_data] => Array
(
[0] => Array
(
[booking] => 2
[price] => 30
)
)
)
[1] => Array
(
[user_id] => 2
[booking_data] => Array
(
[0] => Array
(
[booking] => 1
[price] => 60
)
[1] => Array
(
[booking] => 6
[price] => 10
)
)
)
[2] => Array
(
[user_id] => 1
[booking_data] => Array
(
[0] => Array
(
[booking] => 4
[price] => 50
)
)
)
)
不知道为什么,添加了一个带有user_id = 1 的新元素。由于user_id = 1 已经存在,而不是带有user_id = 1 的另一个新元素,预订详细信息应附加到先前记录的booking_data。
我做错了什么?
这里是在线沙盒链接:- http://sandbox.onlinephpfunctions.com/code/0feb80c20e2b7df30fdf05662cd7aea415b29464
【问题讨论】:
-
您需要使用临时(用户 ID)密钥,然后再重新索引。如果我没有家人,我会回答。输入是否来自 mysql 结果集?为什么您实际上需要新结构?
-
可能您应该使用 user_id 作为单个数组的数组键(而不是 0、1、2、...),这样您就可以简单地对预订和价格进行排序。可能会检查键是否存在,如果不存在,则使用 user_id 键创建一个新数组。
-
如果这是一个mysql结果集,你在用pdo吗?
-
您的项目 ny 分组有什么好处?你下一步怎么做?这些数据是如何使用的?