JeuWeb (JeuPHP) - Crée ton jeu par navigateur

Version complète : [Résolu] Addition champs array multidimensionnel
Vous consultez actuellement la version basse qualité d'un document. Voir la version complète avec le bon formatage.
Coucou all 1

Derrière ce titre un peu barbare, se cache un petit problème, peut-être tout simple a résoudre, mais j'avoue que j'ai pas trouvé 1

J'ai un array de ce genre ( Résultat du print_r )

Code PHP :
Array
(
    [
0] => Array
        (
            [
name => Premier
            
[number] => 5
        
)

    [
1] => Array
        (
            [
name => Deuxieme
            
[number] => 2
        
)

    [
2] => Array
        (
            [
name => Dernier
            
[number] => 4
        


Mon problème est que je voudrais additionner les champs number, c'est a dire qu'a la fin je devrais avoir 11 dans l'exemple ci dessus.

et je vois pas trop comment 1

Merci a ceux qui m'aideront 2

Cordialement,
Code PHP :
$sum 0;
foreach(
$arrays as $array) {
foreach(
$array as $key => $value) {
if (
$key === 'number') {
$sum += $value;
}
}

Arf, et pourquoi j'y ai pas pensé :/

J'passe pour un con pas doué maitenant 1

Ty oxman,
j'me suis basé sur ta réponse même si dans mon cas c'était pas exactement sa 2
Et comment faire pour additionner toutes les clés identiques automatiquement ? Je me souviens que je souhaitez faire ça pour déterminer les caractéristiques totales d'un personnage, il y a bien longtemps.


Sephi-Chan
Code PHP :
$arrays = array();
$arrays[] = array('name' => 'Premier''number' => 5'bim' => 2'boum' => 3);
$arrays[] = array('name' => 'Deuxieme''number' => 2'bim' => 4'boum' => 2);
$arrays[] = array('name' => 'Dernier''number' => 4'bim' => 6'boum' => 6);

$sum = array();
foreach(
$arrays as $array) {
        foreach(
$array as $key => $value) {
                if (
is_numeric($value) === TRUE) {
                        if (isset(
$sum[$key]) === FALSE) {
                                
$sum[$key] = 0;
                        }

                        
$sum[$key] += $value;
                }
        }
}

var_dump($sum); 
Very nice ! C'est là un script très utile ! Je pense notamment à ceux qui font des jeux de rôle, mais pas seulement !


Sephi-Chan
et array_sum et ses petits amis ? ou au pire un seul for/each avec array_value, me semble que ca serait plus efficace que des for/each en cascade.
J'ai réfléchis pour voir si il y avait une méthode plus sexy, sans doute que oui, mais elle ne m'a pas sauté au yeux.
Vas-y fait en une avec array_sum, array_values et consort.
Ca ne m'a pas semblé possible, où en se torturant vraiment les méninges peut-être.
Moi non plus, je n'avais pas réussi avec array_sum(). Cela pour la simple raison qu'il fait la somme horizontale de la matrice, au lieu d'en faire la somme verticale, comme on cherche à le faire. 2


Sephi-Chan
'ffectivement, au temps pour moi, c'est pas que je doutais de vos capacités mais je pensais que ct possible d'allier assez simplement array_sum avec une autre fonction array pour du multidimentionnel, mais... on dirait que non.
Reste donc à l'inventer :
Code :
function arraysomme($tab) {
    $som = 0;
    foreach($tab as $value) {
        if (is_array($value))
            $som += arraysomme($value);
        elseif (is_numeric($value))
            $som += $value;
    }
    return $som;
}
URLs de référence