Maison > Questions et réponses > le corps du texte
J'ai un tableau d'achat dans un centre commercial. Il y a des commandes dans le tableau d'achat. Certaines commandes contiennent les mêmes produits que d'autres commandes. Le champ de montant à l'intérieur correspond à la quantité achetée du produit dans la commande. si cette commande est la même que la quantité achetée du produit dans la commande. Si l'ID d'un certain produit est le même, la quantité dans le champ du montant sera superposée. Que dois-je faire ?
tableau(
[0]=>
'pid'=>7,
'montant'=>1,
[1]=>
'pid'=>7,
'montant'=>2,
[2]=>
'pid'=>8,
'montant'=>1,
)
Par exemple, dans ce tableau, il y a deux valeurs pid qui sont identiques. J'ajouterai les valeurs combinées pour former ce tableau
tableau(
[0]=>
'pid'=>7,
'montant'=>3,
[1]=>
'pid'=>8,
'montant'=>1,
)
伊谢尔伦2017-05-16 13:03:33
Utilisez pid comme clé du nouveau tableau
$returnarr = array();
foreach($data as $val) {
if(isset($returnarr[$val['pid']])) {
$returnarr[$val['pid']]['amount'] += $val['amount'];
} else {
$returnarr[$val['pid']]['pid'] = $val['pid'];
$returnarr[$val['pid']]['amount'] = $val['amount'];
}
}
怪我咯2017-05-16 13:03:33
Écrivez une boucle, jugez s'il y a les mêmes en fonction du pid, fusionnez-les et enfin générez un nouveau tableau OK
phpcn_u15822017-05-16 13:03:33
$allok = array();
foreach ($all as $key1 => &$value1){
foreach ($value1 as $key2 => $value2){
$allok[$value2['pid']] = $value2;
$allok[$value2['pid']] = $allok[$value2['pid']]['amount'] + $value2['amount'];
/*$queryproductshop = Model('Product')->queryidshop($value2['pid']);
$queryshopclass = Model('ProductClassify')->SaleConfigShopClass($queryproductshop['cid']);
$queryproductshop['class'] = $queryshopclass['title'];
$allshop[] = $queryproductshop;*/
}
}
dump($allok);
Je l'ai résolu moi-même, c'est trop compliqué d'y penser
我想大声告诉你2017-05-16 13:03:33
//Le code est le suivant, j'espère qu'il vous sera utile.
$orderInfo = tableau(
[0]=>
'pid'=>7,
'amount'=>1,
[1]=>
'pid'=>7,
'amount'=>2,
[2]=>
'pid'=>8,
'amount'=>1,
);
foreach ($orderInfo as $k=>$v)
{
$bKey=$v['pid'];
if(!array_key_exists($bKey, $orderArr))
{
$orderArr[$bKey] = [];
$sumData[$bKey] = 0;
}
$orderArr[$bKey]=$v;
$sumData[$bKey]+=$orderArr[$bKey]['amount'];
$orderArr[$bKey]['amount']=$sumData[$bKey];
}
var_dump($orderArr);