[PHP] PRINT_R beinvloed IF-statement

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 08-09 15:03

Douweegbertje

Wat kinderachtig.. godverdomme

Topicstarter
Modbreak:Topic is afgesplitst van De Devschuur Coffee Corner - Iteratie 5


[RANT]
:( :( :( :(
een print_r veranderd de result van een IF statement...
Heb een if statement die false returned. Op het moment dat ik voor dit if statement een print_r van een array wil doen, is opeens magisch het statement true. :( :( :( :( :(


[/]

[ Voor 15% gewijzigd door BtM909 op 26-02-2014 13:49 ]


Acties:
  • 0 Henk 'm!

  • Cor453
  • Registratie: Mei 2011
  • Laatst online: 17-08 22:55
Douweegbertje schreef op woensdag 26 februari 2014 @ 12:47:
[RANT]
:( :( :( :(
een print_r veranderd de result van een IF statement...
Heb een if statement die false returned. Op het moment dat ik voor dit if statement een print_r van een array wil doen, is opeens magisch het statement true. :( :( :( :( :(


[/]
Which might be a bug ;). Is het nog steeds zo als je het zo doet:
code:
1
2
$printOutput = print_r($array, true);
echo $printOutput;


Kan natuurlijk liggen aan de output buffer van PHP...

Acties:
  • 0 Henk 'm!

Verwijderd

Douweegbertje schreef op woensdag 26 februari 2014 @ 12:47:
[RANT]
:( :( :( :(
een print_r veranderd de result van een IF statement...
Heb een if statement die false returned. Op het moment dat ik voor dit if statement een print_r van een array wil doen, is opeens magisch het statement true. :( :( :( :( :(


[/]
Worthless without code... :9

Acties:
  • 0 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 08-09 15:03

Douweegbertje

Wat kinderachtig.. godverdomme

Topicstarter
Als een modje het misschien kan afsplitsen? :x xoxox

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    public function checkData($var)
    {

        $sql = "SELECT * FROM blaat WHERE foo = '".$var."'";
        $result = MsSql::createSingleArrayResult($sql);
     
        // zonder print_r hier geeft "opnieuw fetchen"
        // met print_r hier, geeft aan "date nog goed"

      if(is_array($result))
      {
        if(strtotime($result['DATUM']->date) > strtotime('-1 day') ) 
        {
          echo "date nog goed";
        }
        else
        {
          echo "opnieuw fetchen";
        }
      }

      // etc



oh en als ik het volgende doe:


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
    public function checkData($var)
    {

        $sql = "SELECT * FROM blaat WHERE foo = '".$var."'";
        $result = MsSql::createSingleArrayResult($sql);
     
        // zonder print_r hier geeft "opnieuw fetchen"
        // met print_r hier, geeft aan "date nog goed"

      if(is_array($result))
      {
        if(strtotime($result['DATUM']->date) > strtotime('-1 day') ) 
        {
          echo "date nog goed";
        }
        else
        {
          echo "opnieuw fetchen";
//zelfde if statement waar hij eerst doorheen ging. let niet op de ident.
if(strtotime($result['DATUM']->date) > strtotime('-1 day') ) 
        {
          echo "date nog goed";
        }
        }
      }

      // etc


dan krijg je dus "opnieuw fetchen" en "date nog goed" :)

[ Voor 40% gewijzigd door Douweegbertje op 26-02-2014 13:17 ]


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
@Douweegbertje: paste eens exact 2 voorbeelden met en zonder print_r?

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 08-09 15:03

Douweegbertje

Wat kinderachtig.. godverdomme

Topicstarter
Het probleem zit hem in het volgende;
PHP:
1
2
3
4
5
6
7
8
9
Array
(
    [ID] => 8
    [DATUM] => DateTime Object
        (
            [date] => 2014-02-24 18:35:40
            [timezone_type] => 3
            [timezone] => Europe/Paris
        )


Alleen zonder de print_r is dat allemaal leeg als je dat wilt benaderen door

code:
1
$result['DATUM']  of $result['DATUM']->date


en gefixed nu door het volgende te doen -,-

code:
1
$result['DATUM']->getTimestamp();

[ Voor 10% gewijzigd door Douweegbertje op 26-02-2014 13:46 ]


Acties:
  • 0 Henk 'm!

  • EddoH
  • Registratie: Maart 2009
  • Niet online

EddoH

Backpfeifengesicht

Assign je niet per ongeluk de output van print_r aan $result ? :+

Doe eens wat Hydra zegt.

Acties:
  • 0 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 08-09 15:03

Douweegbertje

Wat kinderachtig.. godverdomme

Topicstarter
Het was een "speciaal" object wat je niet mag benaderen als object, wat je dus als het ware moet casten met ->getTimestamp(); Dan werkt ie weer :+

Acties:
  • 0 Henk 'm!

  • EddoH
  • Registratie: Maart 2009
  • Niet online

EddoH

Backpfeifengesicht

"Een soort van"
"..wat je als het ware moet casten"

Afbeeldingslocatie: http://i1.kym-cdn.com/photos/images/newsfeed/000/234/765/b7e.jpg


:Y)

Acties:
  • 0 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 08-09 15:03

Douweegbertje

Wat kinderachtig.. godverdomme

Topicstarter
EddoH schreef op woensdag 26 februari 2014 @ 13:54:
"Een soort van"
"..wat je als het ware moet casten"

[afbeelding]


:Y)
Nee precies :+
Dit is niet echt wat ik had verwacht en dat je de data maar op één manier kunt benaderen EN dat na een print_r je "datetime object" niet eens meer zo'n object is, omdat hij dan wel benaderbaar is..

Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Klinkt alsof er dingen gelazyload worden.

https://niels.nu


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Hydra schreef op woensdag 26 februari 2014 @ 14:15:
Klinkt alsof er dingen gelazyload worden.
...wat zo te zien weer ligt aan die MySql::createSingleArrayResult. Waar komt die vandaan en moet je niet gewoon je result hydraten?

'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!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 08-09 15:03

Douweegbertje

Wat kinderachtig.. godverdomme

Topicstarter
nee en nee.
De createSingleArrayResult is gewoon een custom functie die in feite niets bijzonders doet, behalve dingen netjes in een bepaald type array gooit, en nog wat dingetjes doet.

Gewoon nogmaals; [DATUM] => DateTime Object
Dat komt puur vanuit de MsSQL database, is blijkbaar "standaard".

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Dat hangt er maar net vanaf hoe je het er zelf uithaalt maar als je niet wil delen hoe je dat doet kunnen we daar niks over zeggen. Een DateTime-object is standaard-PHP en als die geïnitialiseerd wordt dan blijft die dat ook. Zoals Hydra al zegt zit er waarschijnlijk iets van lazy loading in de weg waardoor je code wel weet dat er een DateTime terugkomt maar wordt die vervolgens pas nadat je hem direct aanspreekt ingeladen. Een method op dat object aanroepen is symptoombestrijding en geen echte oplossing.

'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!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 08-09 15:03

Douweegbertje

Wat kinderachtig.. godverdomme

Topicstarter
Kan helaas niet in membersonly én code tags :p

Members only:
Alleen zichtbaar voor ingelogde gebruikers. Inloggen


Members only:
Alleen zichtbaar voor ingelogde gebruikers. Inloggen

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Douweegbertje schreef op woensdag 26 februari 2014 @ 13:50:
Het was een "speciaal" object wat je niet mag benaderen als object, wat je dus als het ware moet casten met ->getTimestamp(); Dan werkt ie weer :+
Een "speciaal" object dat je moet casten met getTimestamp()? Dat heeft niks met casten te maken maar gewoon met de functies op dat object. Bekijk gewoon de documentatie van DateTime :)

offtopic:
NMe gefeli!

[ Voor 5% gewijzigd door Cartman! op 26-02-2014 20:42 ]


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Waarom gebruik je niet gewoon PDO, eigenlijk ....?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 08-09 15:03

Douweegbertje

Wat kinderachtig.. godverdomme

Topicstarter
drm schreef op donderdag 27 februari 2014 @ 00:15:
Waarom gebruik je niet gewoon PDO, eigenlijk ....?
Tja, als je me reacties een paar keer had gelezen in de coffeecorner weet je iets meer waar en hoe ik werk :p In kort is het gewoon zo dat we met een super grote applicatie zitten, en dat we ooit zeker overgaan naar PDO maar dat kost nu redelijk veel tijd. Het is iets wat we graag willen, maar we krijgen de tijd er nog niet voor.
Pagina: 1