[PHP] Oplossing empty probleem?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • verytallman
  • Registratie: Augustus 2001
  • Laatst online: 18-08 18:12
Ik kon even geen betere titel bedenken dus als een mod die wil aanpassen best.

Ik heb hetzelfde probleem als in dit topic:
[rml][ PHP-Tip] empty(een variabele met waarde 0) = true[/rml]

Isset is voor mij geen oplossing. Heeft iemand een andere oplossing?

Even nog het probleem:
PHP:
1
2
3
4
5
6
7
8
9
10
11
$nul = 0;
if (empty($nul)) {
   echo 'Hij vind dat $nul leeg is';
}

Bij een int kan ik er nog inkomen maar bij een string doet hij het zelfde:

$nul = '0';
if (empty($nul)) {
   echo 'Hij vind dat $nul leeg is';
}

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

PHP:
1
if (trim($nul) == '') //empty dus

:?

[ Voor 18% gewijzigd door NMe op 04-03-2006 21:23 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
de php manual zegt dat empty idd bij een 0 idd een true retouneerd
en aangezien php geen types kent ('0' == 0) klopt het idd

je schijnt echter wel types te kunnen forceren

ik zou het zo oplossen:
PHP:
1
if (empty($nul) || strlen($null) == 0)

[ Voor 22% gewijzigd door BasieP op 04-03-2006 21:20 ]

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • Borizz
  • Registratie: Maart 2005
  • Laatst online: 24-08 20:35
De handleiding van de empty functie van php weleens bekeken?
The following things are considered to be empty:

"" (an empty string)
0 (0 as an integer)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)
var $var; (a variable declared, but without a value in a class)

[ Voor 51% gewijzigd door Borizz op 04-03-2006 21:19 ]

If I can't fix it, it ain't broken.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

BasieP schreef op zaterdag 04 maart 2006 @ 21:18:
de php manual zegt dat empty idd bij een 0 idd een true retouneerd
en aangezien php geen types kent ('0' == 0) klopt het idd

je schijnt echter wel types te kunnen forceren

ik zou het zo oplossen:
PHP:
1
if (empty($nul) || strlen($null) == 0)
Je weet dat dat geen verschil gaat maken met empty, omdat je met een waarde van 0 in de variabele $nul nog steeds de helft van de expressie waarmaakt, waardoor de hele expressie waar is? :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

BasieP schreef op zaterdag 04 maart 2006 @ 21:18:
de php manual zegt dat empty idd bij een 0 idd een true retouneerd
en aangezien php geen types kent ('0' == 0) klopt het idd
PHP kent wel types, echter is het een loose-(of weak-)typed language. Dat weerhoud je er echter niet van om zelf expliciet typecasting te doen of om operators te gebruiken die ook op type checken (=== en !== bijvoorbeeld) ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Als je geen True wilt krijgen als je var "0" is, moet je simpelweg de empty()-functie niet gebruiken. Optie is je eigen functie te schrijven welke de juiste waarde afvangt.

Beetje afhankelijk van wat je precies wilt doen met je var heb je misschien iets aan is_numeric
().
BasieP schreef op zaterdag 04 maart 2006 @ 21:18:
de php manual zegt dat empty idd bij een 0 idd een true retouneerd
en aangezien php geen types kent ('0' == 0) klopt het idd)
[/php]
("0" == 0) is true ja, maar
("0" === 0) is false.
PHP is loose-typed. Met de 3-voudige '=' moet het subtype van de 2 expressies ook gelijk zijn.

[ Voor 43% gewijzigd door frickY op 04-03-2006 22:27 ]


Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 21-09 14:39

Johnny

ondergewaardeerde internetguru

Volgens mij wil je is_null($var) hebben of strlen($var) == 0 om te kijken of een string leeg is.

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Acties:
  • 0 Henk 'm!

Verwijderd

Stiekem probeersel, maar werkt de isset niet?

Please don't burn me down

edit:

En toen las ik de startpost eens goed... That's it, I'm out of here

[ Voor 37% gewijzigd door Verwijderd op 04-03-2006 22:39 ]


Acties:
  • 0 Henk 'm!

  • kunnen
  • Registratie: Februari 2004
  • Niet online
verytallman schreef op zaterdag 04 maart 2006 @ 21:13:
PHP:
1
   echo 'Hij vind dat $nul leeg is';
offtopic:
Psst - het is "hij vindt"

[ Voor 6% gewijzigd door kunnen op 04-03-2006 23:39 ]


Acties:
  • 0 Henk 'm!

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 10-02 23:00
verytallman schreef op zaterdag 04 maart 2006 @ 21:13:
Ik kon even geen betere titel bedenken dus als een mod die wil aanpassen best.

Ik heb hetzelfde probleem als in dit topic:
[rml][ PHP-Tip] empty(een variabele met waarde 0) = true[/rml]

Isset is voor mij geen oplossing. Heeft iemand een andere oplossing?

Even nog het probleem:
PHP:
1
2
3
4
5
6
7
8
9
10
11
$nul = 0;
if (empty($nul)) {
   echo 'Hij vind dat $nul leeg is';
}

Bij een int kan ik er nog inkomen maar bij een string doet hij het zelfde:

$nul = '0';
if (empty($nul)) {
   echo 'Hij vind dat $nul leeg is';
}
Weetje, het probleem is dat je geen probleem geeft? Ik vind dit namelijk geen probleem. En strlen werkt toch prima? Als je niet noemt wat je wilt bereiken, zul je ook geen oplossing vinden. Je zal wel een webform hebben waar je 0 moet kunnen invullen, dan werkt isset inderdaad niet. Dus strlen.

Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:34
PHP:
1
2
3
function reallyEmpty(&$in) {
    return (empty($in) && $in !== '0');
}


Ik kan me de verwondering verder wel voorstellen. Een string met het teken "0" is immers niet leeg. Aan de andere kant zou het echter inconsistent zijn om 0 == "0" naar true te evalueren en vervolgens te stellen dat empty(0) anders is dan empty("0"). De PHP implementatie is wat mij betreft dus de correcte. Wil je wat anders dan kan het eenvoudig met een functie'tje als hierboven...

Regeren is vooruitschuiven

Pagina: 1