Antworten auf deine Fragen:
Neues Thema erstellen

Funktionsaufruf im IF funktioniert nicht

netbandit

Aktives Mitglied

Hallo,


ich glaube ich habe im Moment ein Brett vor'm Kopf :uhm:

PHP:
<?
function zahl($wert){
 if(!preg_match('/^([0-9]+)$/', $wert) || $wert!=floor($wert) || $wert<1){
  $wert=0;
 }
 return $wert;
}
$arr=array('2x0', 'x0', '3', 4, 'peter');
while(list($k,$v)=each($arr)){
 echo $k . ': ' . $v;
 if(zahl($v)==$v){
  echo ' - ist Zahl (' . zahl($v) . ')<br>';
 }
 else{
  echo ' - ist keine Zahl (' . zahl($v) . ')<br>';
 }
}
?>

Ausgegeben wird:
0: 2x0 - ist keine Zahl (0)
1: x0 - ist Zahl (0)
2: 3 - ist Zahl (3)
3: 4 - ist Zahl (4)
4: peter - ist Zahl (0)

Eigentlich sollten doch nur $arr[2] und $arr[3] Zahlen sein?! Wie kann z.B. "Peter" eine Zahl sein? Mag mir vielleicht mal einer helfen?

Danke :)
 
Zuletzt bearbeitet:

Kecko

Noch nicht viel geschrieben

AW: Funktionsaufruf im IF funktioniert nicht

hab zwar keine ahnung von php... aber warumm versuchs dus nicht mal über eine klasse...
 

Chriss1987

me.drinkCoffee();

AW: Funktionsaufruf im IF funktioniert nicht

Hi,

das liegt daran, dass floor() bei Variablen, die keine Zahl sind, 0 zurückliefert.

Wenn du noch nen Beispiel für ne Funktion suchst, die auf ne Zahl prüft:


Schöne Grüße aus dem Sauerland!
Chriss
 

netbandit

Aktives Mitglied

AW: Funktionsaufruf im IF funktioniert nicht

Kann ja nicht an der Funktion selbst liegen, wenn ich die if-else Anweisung umdrehe funktioniert es ja

PHP:
<?
function zahl($wert){
 if(!preg_match('/^([0-9]+)$/', $wert) || $wert!=floor($wert) || $wert<1){
  $wert=0;
 }
 return $wert;
}
$arr=array('2x0', 'x1', '3', 4, 'peter');
while(list($k,$v)=each($arr)){
 echo $k . ': ' . $v;
 if(!zahl($v)==$v){
  echo ' - ist keine Zahl (' . zahl($v) . ')<br>';
 }
 else{
  echo ' - ist eine Zahl (' . zahl($v) . ')<br>';
 }
}
?>

Liefert das richtige Ergebnis:

0: 2x0 - ist keine Zahl (0)
1: x1 - ist keine Zahl (0)
2: 3 - ist eine Zahl (3)
3: 4 - ist eine Zahl (4)
4: peter - ist keine Zahl (0)

also sollte in dem ersten Code ja dann hier irgendwo ein Fehler sein:

PHP:
if(zahl($v)==$v){
 
Zuletzt bearbeitet:

saila

Moderatorle

AW: Funktionsaufruf im IF funktioniert nicht

Hi,

vielleicht hilft dir das im Denken weiter (und bitte genau durchlesen) ;)

PHP:
<?php
function zahl($wert){
    
    if(preg_match('#^[0-9+]$#', $wert)) {
        return 1;
    } else {
        return 0;
    }
}

$arr=array('2x0', 'x1', '3', 4, 'peter');

foreach($arr as $k => $v) {
    echo $k . ': ' . $v;
    if(zahl($v)) echo ' - ist eine Zahl (' . zahl($v) . ')<br>';
    else echo ' - ist keine Zahl (' . zahl($v) . ')<br>';
}
?>
 

netbandit

Aktives Mitglied

AW: Funktionsaufruf im IF funktioniert nicht

OK, jetzt geht's schonmal in die richtige Richtung, Danke saila :)

PHP:
function zahl($wert){
 if(!preg_match('/^([0-9]+)$/', $wert) || $wert!=floor($wert) || $wert<1){
  $wert='0'; // letzte Änderung hier
 }
 return $wert;
}
$arr=array('2x0', 'x0', '3', 4, 'peter');
while(list($k,$v)=each($arr)){
 echo $k . ': ' . $v;
 if($v==zahl($v)){
  echo ' - ist Zahl (' . zahl($v) . ')<br>';
 }
 else{
  echo ' - ist keine Zahl (' . zahl($v) . ')<br>';
 }
}
Ergibt

0: 2x0 - ist keine Zahl (0)
1: x0 - ist keine Zahl (0)
2: 3 - ist Zahl (3)
3: 4 - ist Zahl (4)
4: peter - ist keine Zahl (0)
Passt jetzt.

0 ist jetzt String ('0'!=0), siehe Kommentar. Kann ich mich jetzt darauf verlassen oder erwarten mich jetzt andere Problemchen? Ich brauche in jedem Fall den tatsächlichen Wert oder alternativ 0. :D

Btw; Asche auf mein Haupt, habe zwar irgendwo mal was davon gelesen weiß aber nicht mehr wo (würde mal sagen erfolgreich verdrängt): Was enthielt zahl($v) im ersten Beitrag? NULL, False, ... :uhm:

Danke & Grüße :)
 

saila

Moderatorle

AW: Funktionsaufruf im IF funktioniert nicht

Also du willst definitiv int. Dieser int kann darf auch als string erfolgen. Im Grunde - lange Rede....

Prüfe auf gleich und gleicher Type in der while-schleife.

"if($v === zahl($v)){"
 

netbandit

Aktives Mitglied

AW: Funktionsaufruf im IF funktioniert nicht

Klappt im Testscript. Und genau das hatte ich gestern auch schon in der Seite die ich zur Zeit überarbeite auch ausprobiert, funktionierte nicht; ahne jetzt auch warum: Die Seite arbeitet mit eigenem Cache, habe ich bestimmt nicht gelöscht/deaktiviert. War wohl nicht mein Tag. :rolleyes:

Vielen Dank saila :)
 

saila

Moderatorle

AW: Funktionsaufruf im IF funktioniert nicht

Nein, deine if/else war nicht korrekt - so wie ich es noch weis - ohne das nun alles noch mal durchzulesen. Abgesehen davon - da sollte man keinen cach aktivieren, da dies dynamische Inhalte sind ;) cash ist für statische Inhalte.
 

netbandit

Aktives Mitglied

AW: Funktionsaufruf im IF funktioniert nicht

Nein, deine if/else war nicht korrekt - so wie ich es noch weis - ohne das nun alles noch mal durchzulesen. Abgesehen davon - da sollte man keinen cach aktivieren, da dies dynamische Inhalte sind ;) cash ist für statische Inhalte.
Hast mich, glaube ich, falsch verstanden. Ich weiss, dank Dir, dass meine if-Abfrage falsch war. Funktioniert jetzt, auch mt der Seite die ich zur Zeit überarbeite. ;)
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.635
Beiträge
1.538.455
Mitglieder
67.558
Neuestes Mitglied
StarsMan
Oben