我是PHP新手,在我的项目中发现了这个问题。我有这个阵列:
Array
(
[0] => Array
(
[count] => 1
[account] => 14
[amt] => 1000
)
[1] => Array
(
[count] => 1
[account] => 11
[amt] => 124
)
[2] => Array
(
[count] => 1
[account] => 12
[amt] => 2345
)
[3] => Array
(
[count] => 1
[account] => 14
[amt] => 2345
)
)
我想把它转换成这种格式的
Array
(
[14] => Array
(
[0] => Array
(
[amt] => 1000
[count] => 1
[volume] => 1000
)
[1] => Array
(
[amt] => 124
[count] => 0
[volume] => 0
)
[2] => Array
(
[amt] => 2345
[count] => 1
[volume] => 2345
)
)
[11] => Array
(
[0] => Array
(
[amt] => 1000
[count] => 0
[volume] => 0
)
[1] => Array
(
[amt] => 124
[count] => 1
[volume] => 124
)
[2] => Array
(
[amt] => 2345
[count] => 0
[volume] => 0
)
)
[12] => Array
(
[0] => Array
(
[amt] => 1000
[count] => 0
[volume] => 0
)
[1] => Array
(
[amt] => 124
[count] => 0
[volume] => 0
)
[2] => Array
(
[amt] => 2345
[count] => 1
[volume] => 2345
)
)
)
正如您可能注意到的,account
键将成为新数组的键,并且值内的数组将所有数组都放在第一个数组上。请帮忙。它就像一个硬核阵列,我的项目真的需要它。谢谢
试试这个:
$newArray = array();
foreach ($origArray as $val)
{
$val['volume'] = $val['count'] * $val['amt'];
$account = $val['account'];
unset($val['account']);
$newArray[$account][]=$val;
}
编辑
好吧,我想这可能接近你想要的,尽管我不明白为什么每个账户都有3个结果,而一开始只有4个。
$newArray = array();
$accounts = array();
foreach ($origArray as $val) {
$accounts[$val['account']] = $val['account'];
}
foreach ($accounts as $account) {
foreach ($origArray as $val) {
$val['count'] = $account == $val['account'] ? $val['count'] : 0;
$val['volume'] = $val['count'] * $val['amt'];
unset($val['account']);
$newArray[$account][] = $val;
}
}
<?php
$final_array = array();
$dataset = YOUR FIRST ARRAY;
foreach($dataset as $data)
{
$account = $data['account'];
unset($data['account'])
$final_array[$account][] = $data;
}
这应该能满足你的需要。尽管我不知道第二个数组中的卷来自哪里