0
votes

Array PHP: Somme conditionnelle

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;
    }
  }
}


0 commentaires

5 Réponses :


1
votes

Un simple isset devrait le faire: xxx


3 commentaires

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.



1
votes

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);


2 commentaires

@executable Seul le premier caractère doit être pris en compte pour OP. Même si $ clé = 'AB'; Cela aboutirait à $ lettre = 'a'; car substr ($ (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



1
votes

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);


1 commentaires

Vous avez un ) manquant dans votre état



0
votes

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);


0 commentaires

2
votes

Solution simple: xxx

sortie: - https://3v4l.org/ tz4ei


0 commentaires