J'ai un tableau à ressembler à ceci:
foreach ($xml->children() as $output) { foreach ($array as $key => $value) { if (substr($key,0,1) == $output->KEY) { $sum += $value; echo $sum; } } }
5 Réponses :
Un simple isset code> devrait le faire:
Bon sang: D quelques secondes plus tard
@ Johnnyb1988 Pour être précis deux secondes plus tard.
@Salman Je suis heureux que mon code soit comme le vôtre, cela signifie que mes études sont de bonne manière.
Vous pouvez essayer celui-ci. Il faudra une première lettre de votre clé et apportera la somme de toutes les valeurs avec ces clés de première lettre.
<?php $sum = []; foreach ($array as $key => $value) { $letter = substr($key,0,1); if (!isset($sum[$letter])){$sum[$letter] = 0;} $sum[$letter] += $value; } var_dump($sum);
@executable Seul le premier caractère doit être pris en compte pour OP. Même si $ clé = 'AB'; code> Cela aboutirait à
$ lettre = 'a'; code> car
substr ($ (code) code, 0, 1) code > Retourner le premier personnage
L'auteur a demandé juste avec le premier caractère "Valeurs de somme foreach" uniques "lorsque seul le premier caractère est considéré" Vous pouvez également valider la clé avec CTYPE_ALPHA pour vérifier s'il s'agit de la lettre, du numéro et de ce résultat prend des décisions supplémentaires
Essayez de cette façon
$array = array('a1' => 0, 'a2' => 2, 'a3' => 3, 'b1' => 2, 'b2' => 3); $result = array(); foreach($array as $key => $value){ if(isset($result[$key[0]])){ $result[$key[0]] = $result[$key[0]]+$value; } else { $result[$key[0]] = $value; } } print_r($result);
Vous avez un ) manquant code> dans votre état
Quick and Facile, vous pouvez avoir un nombre de chiffres dans le tableau après les caractères.
<?php $array = ["a1" => 0, "a2" => 2, "a3" => 1, "b1" => 2, "b2" => 3]; $newArray = []; foreach ($array as $key => $value) { $key = preg_replace("/[0-9]*$/", "", $key); $newArray[$key] = (isset($newArray[$key])) ? $newArray[$key] + $value : $value; } print_r($newArray);