Unerwartetes Ergebnis mit array_sum()

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Unerwartetes Ergebnis mit array_sum()

    Hallo,

    ich versuche mich gerade an einer kleinen Funktion, die die Prüfziffer einer ISBN-10-Nummer berechnen soll. Dazu übergebe ich die ISBN ohne Prüfziffer (die sich an der letzten Stelle befindet) und berechne nach dem Schema:

    3-492-04590-?
    1x3 + 2x4 + 3x9 + 4x2 + 5x0 + 6x4 + 7x5 + 8x9 + 9x0 = 177 : 11 = 16, Rest = 1

    Die Zwischensummen bilde ich in dem String $comma_separated, den ich in ein Array auflöse (kommagetrennt). Nun käme die Summenbildung, aber dabei erhalte ich nicht die erwarteten 177, sondern eine 3.

    Kann jemand von euch den Fehler in meinem Skript erkennen? ich stehe gerade echt auf dem Schlauch:

    PHP-Code:

    <?php

    function isbnchecksum($isbn10){
    $string $isbn10;

    for(
    $i=0;$i<strlen($string);$i++)
     {
      
    $explode[$i] = substr($string$i1);
      
    $multiplikator $i+1;
      
    $zahl[$i] = $explode[$i]*$multiplikator;
      
    $comma_separated implode(","$zahl);
     }
     
    $summe=array($comma_separated);
     
    $ergebnis=array_sum($summe);
     echo 
    "Übergebene ISBN: $isbn10 - die Prüfziffernberechnung beginnt";
     echo 
    "<br>Mein zukünftiges Array: $comma_separated<br>";
     
    $a = array($comma_separated);
     echo 
    "<br><br>Summe aus dem Array (erwartet 177): = ".array_sum($a)."\n";
    }

    $isbn isbnchecksum("349204590");

    ?>
    Die Bildschirmausgabe wäre bei diesem Beispiel:

    Übergebene ISBN: 349204590 - die Prüfziffernberechnung beginnt
    Mein zukünftiges Array: 3,8,27,8,0,24,35,72,0


    Summe aus dem Array (erwartet 177): = 3
    Vielen Dank!

    Liebe Grüße
    alrescha

  • #2
    $summe=array($comma_separated);
    Diese Zeile ist nicht korrekt, denn $comma_separated enhält einen String, damit hast Du ein array mit einem Wert.
    In deinem fall irgendwas mit 3,2,
    Also ist array_sum = 3
    mach mal print_r($summe)
    dann siehstes
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      aber warum denn so kompliziert, mit $string{$index} kann man schön auf die einzelne Stelle zugreifen, probiere mal so:

      PHP-Code:
      ...
      $summe 0;
      for (
      $i=0;$i<strlen($string);$i++)
         
      $summe += ($i+1)*$string{$i};
      echo 
      "Summe = $summe";
      ... 

      Kommentar

      Lädt...
      X