[英]Create multidimensional array in PHP
我有一个数据库查询结果,它是一个数组,如下所示:
[{"uid":29,"totalAmount":"5400.00"},
{"uid":499,"totalAmount":"5400.00"},
{"uid":507,"totalAmount":"3960.00"},
{"uid":497,"totalAmount":"3960.00"},
{"uid":498,"totalAmount":"3960.00"},
{"uid":34,"totalAmount":"3960.00"},
{"uid":21,"totalAmount":"3240.00"},
{"uid":27,"totalAmount":"2880.00"},
{"uid":500,"totalAmount":"2880.00"},
{"uid":19,"totalAmount":"2700.00"},
{"uid":22,"totalAmount":"2700.00"},
{"uid":20,"totalAmount":"2520.00"},
{"uid":23,"totalAmount":"2520.00"},
{"uid":504,"totalAmount":"1800.00"},
{"uid":496,"totalAmount":"1440.00"},
{"uid":26,"totalAmount":"1260.00"},
{"uid":491,"totalAmount":"1080.00"},
{"uid":492,"totalAmount":"720.00"},
{"uid":464,"totalAmount":"540.00"},
{"uid":493,"totalAmount":"540.00"},
{"uid":76,"totalAmount":"540.00"},
{"uid":505,"totalAmount":"180.00"},
{"uid":506,"totalAmount":"180.00"},
{"uid":494,"totalAmount":"180.00"},
{"uid":495,"totalAmount":"180.00"}]
根据这个结果,我想创建一个如下所示的多维数组:
[
"0" =>
[
"0"=>["uid"=>29, "totalAmount"=>5400 ],
"1"=>["uid"=>499, "totalAmount"=>5400]
],
"1" =>
[
"0"=>["uid"=>507, "totalAmount"=>3960 ],
"1"=>["uid"=>497, "totalAmount"=>3960],
"2"=>["uid"=>498, "totalAmount"=>3960 ],
"3"=>["uid"=>34, "totalAmount"=>3960],
],
]
// and so on ...
我试过foreach
:
$topEar = [];
$amount = '';
foreach( $topEarners as $te)
{
array_push($topEar, [$te->uid=>$te->totalAmount]);
}
$topEar;
你可以这样做:
$topEar = array();
$currAmountArray = array();
$amount = null;
foreach( $topEarners as $te) {
if( !is_null($amount) && $te->totalAmount != $amount ) {
array_push($topEar, $currAmountArray);
$currAmountArray = array();
}
array_push($currAmountArray, $te);
$amount = $te->totalAmount;
}
if( !empty($currAmountArray) ) {
array_push($topEar, $currAmountArray);
}
print_r($topEar);
您将在每次迭代时保存最后的$totalAmount
,只要它没有更改 - 您将值存储在名为$currAmountArray
的子数组中,当$totalAmount
更改时,您将值推送到主数组。
我还在foreach
循环之后添加了一个条件,以确保$currAmountArray
中的最后一批数据也将被推送到主数组(即$topEar
)中。
如果您无法使用 SQL 获得所需的结构,那么这将是 PHP 中最简单的方法:
$topEarners = json_decode($json, true);
foreach($topEarners as $row) {
$result[$row['totalAmount']][] = $row;
}
totalAmount
作为键循环totalAmount
数组如果要重置密钥:
$result = array_values($result);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.