php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.12.2008, 04:50  
Neuer Benutzer
 
Registriert seit: 20.12.2008
Beiträge: 8
maynak befindet sich auf einem aufstrebenden Ast
Standard

Danke für dein Rat litterauspirna, schliesslich sucht man sich auch das beste Forum aus. Darum schreibe ich hier weiter.


Ich habe jetzt ein Bug entdeckt. Beim preg_match('#(\d{5})(\d{3})#', $zahl, $array); werden führende Nullen ignoriert, das liefert wiederum falsche Ergebnisse. z.B. 12345078 = 12345 078->hier wird die führende Null ignoriert und die Zahl wird ohne Null genommen.

Wie könnte ich das verhindern ?

Geändert von maynak (23.12.2008 um 05:22 Uhr).
maynak ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 23.12.2008, 07:25  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Indem Du einfach auf die Zahl 1001 addierst
PHP-Code:
<?php
function foo($zahl$i) {
  
$zahl += 1001*$i;
  
$d str_split($zahl);
  
$neun = ($d[0]+$d[2]+$d[4]+$d[6])%2;
  
$zehn = ($d[1]+$d[3]+$d[5]+$d[7])%2;

  return 
$zahl.$neun.$zehn;
}


$zahl 12345678;
for(
$i=1$i<51$i++) {
  echo 
foo($zahl$i), "\n";
}
David ist offline  
Alt 23.12.2008, 08:30  
Neuer Benutzer
 
Registriert seit: 20.12.2008
Beiträge: 8
maynak befindet sich auf einem aufstrebenden Ast
Standard

Hallo David,
du hast mir wirklich sehr geholfen. Ich danke dir sehr. Ich werde es ausprobieren aber irgendwie müsste man das auch in preg_match klären können oder ?
In deinem Vorschlag hast du z.B. die Erhöhung der 5. und 8. Stelle nicht berücksichtigt.

PHP-Code:
function foo($zahl$i) {
  
$zahl += 1001*$i;
  
preg_match('#(\d{5})(\d{3})#'$zahl$array);
  
$first5 $array[1]+1
  
$last3 $array[2]+1;
  
$zahl2 str_split($first5.$last3);
  
  
$d str_split($zahl2);
  
$neun = ($d[0]+$d[2]+$d[4]+$d[6])%2;
  
$zehn = ($d[1]+$d[3]+$d[5]+$d[7])%2;

  return 
$first5.$last3.$neun.$zehn;

Deinen Vorschlag könnte ich so wie hier oben anpassen und benutzen aber da würde ich immer noch das gleiche Problem haben. Natürlich könnte ich auch falschliegen, weil ich es noch nicht ausprobiert habe.

In zusammengesetzter Form werden auch manchmal Uhrzeiten oder Datum (z.B. 19870121) aufgesplittet und da sind auch führende Nullen sehr wichtig. Ich habe zwar gesucht aber nichts passendes gefunden. Es sei denn preg_match macht es richtig aber die führenden Nullen werden später in der Prozedur ignoriert. Aber auf alle Fälle, ich danke dir sehr.

Geändert von maynak (23.12.2008 um 08:44 Uhr).
maynak ist offline  
Alt 24.12.2008, 00:35  
Neuer Benutzer
 
Registriert seit: 20.12.2008
Beiträge: 8
maynak befindet sich auf einem aufstrebenden Ast
Standard

Hallo David, dein Vorschlag funktioniert wunderbar wenn man die 5. Stelle und 8. erhöhen muß also 12345678 -> 12346679 deshalb nimmst du 1001 und falls führende Nullen auftauchen, werden sie nicht abgeschnitten.Aber was mache ich wenn ich die 5. Stelle um 1 erhöhen und die 8. Stelle um 1 reduzieren muss 12345678 -> 12346677 mit 1001 multiplizieren und dann addieren würde mich nicht weiterbringen. Ich weiss, dass ich jetzt etwas nerve aber dieses kleine Detail macht leider den ganzen Code nutzlos falls irgendwelche führende Nullen auftauchen.Array nimmt die Zahlen als integer und die führende Nullen werden abgeschnitten.
maynak ist offline  
Alt 24.12.2008, 00:47  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Oh, davon, dass es verschiedene Varianten gibt, stand bisher nichts im Thread.
Zitat:
wenn ich die 5. Stelle um 1 erhöhen und die 8. Stelle um 1 reduzieren muss
Dann wäre die Zahl statt 1001 die 999.
12345678 + 999 = 12346677. Wie viele Varianten gibt es denn?
Du kannst bei der Darstellung als Zeichenkette dafür sorgen, dass eine bestimmte Breite/Länge eingehalten wird. Zum Beispiel mit sprintf.
PHP-Code:
$result sprintf('%05d%03d'$first5$last3
%d steht für eine Ganzzahl
%5d stellt die Zahl mit mindestens 5 Stellen dar. Ist die Zahl kürzer wird von links mit Leerzeichen aufgefüllt
%05d stellt die Zahl mit mindestens 5 Stellen dar. Ist die Zahl kürzer wird von links mit 0-Zeichen aufgefüllt
David ist offline  
Alt 24.12.2008, 00:57  
Neuer Benutzer
 
Registriert seit: 20.12.2008
Beiträge: 8
maynak befindet sich auf einem aufstrebenden Ast
Standard

ich habe es so gelöst
$last3 = str_pad($array[2],3,"0",STR_PAD_LEFT);

aber ich danke dir vielmals
maynak ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mehrere Arrays summieren buggybugga PHP-Fortgeschrittene 8 22.07.2008 11:51
Variable Variablen zusammen mit Arrays Kenshin PHP Tipps 2008 2 20.04.2008 15:30
eindimensionale arrays sortieren webazubi PHP Tipps 2007 5 23.03.2007 18:11
Arrays sortieren, Bezeichnung, Preis Ticos PHP Tipps 2006 4 07.09.2006 19:37
Arrays kreuzen PHP Tipps 2006 13 08.03.2006 11:36
2 Arrays kombinieren Transmitter PHP Tipps 2006 5 02.01.2006 16:16
[Erledigt] 2 Arrays miteinander vergleichen PHP Tipps 2007 3 17.12.2005 16:54
Objektorientierter Zugriff auf Multidimensionale Arrays PHP-Fortgeschrittene 31 26.11.2005 21:46
Problem beim Zusammenfügen von Arrays mit array_merge PHP Tipps 2005-2 2 08.10.2005 16:44
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
2 Arrays vergleichen und unterschiede auslesen PHP Tipps 2005 6 25.02.2005 09:34
5 assosiative arrays gleichzeitig sortieren PHP Tipps 2004-2 2 13.12.2004 14:07
Erkennung von Arrays in Strings PHP-Fortgeschrittene 15 07.12.2004 13:00
2 arrays in abhängigkeit ??? PHP Tipps 2004 2 11.08.2004 21:19
Werte eines Arrays in eine MySQL schreiben PHP Tipps 2004 2 28.06.2004 13:32

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php array führende nullen, str_split dann alles zusammen addieren, array zusammenfügen, array php zusammenfassen datum, javascript array zusammenfügen, php arrays vergleichen zusammenfügen, zeichenkette aus array zusammenfügen php, javascript array führende null, links zusammenfassen php, 2 arrays vergleichen und zusammenfügen

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:39 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum