PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   Unerwartetes Ergebnis mit array_sum() (https://www.php-resource.de/forum/php-developer-forum/80758-unerwartetes-ergebnis-mit-array_sum.html)

alrescha 28-01-2007 09:50

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:

Zitat:

Ü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

MelloPie 28-01-2007 10:22

$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

asp2php 28-01-2007 10:28

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";
... 



Alle Zeitangaben in WEZ +2. Es ist jetzt 10:33 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG