Freelance Software Consultant

  • Twitter
  • Google Plus

kontakt@cqueiser.de

  • Home
  • Über mich
  • Artikel
  • Kontakt

PHP var_dump(0123)

Posted:
11.03.2017

Tags:
c, oktal, php, var_dump

Comments: 0

Die aktuellste Version von PHP (Abkürzung für “Hypertext Preprocessor”) ist v7.1.2 [php7].

Seit dem Start im Jahr 1995 [php1] hat sich einiges Getan. Anfangs nur als Script-Sprache gedacht, hat es sich zu einer typen sicheren Programmiersprache entwickelt.

In PHPv5 ist es nicht möglich in einem Methodenparameter auf ‘int’, ‘string’ oder ‘array’ zu prüfen.

Beispiel:

public function getBar($foo) 
{
    print $foo;
}

 

Die Variable $foo kann in dem Fall jedem Typ entsprechen. Sollen nur ‘int’ oder ‘strings’ erlaubt sein, dass muss im Methoden-Rumpf mittels ‘is_int’ oder ‘is_string’ geprüft werden.

In PHPv7 ist das nun möglich. Hierzu auch ein Beispiel:

public function getBar(int $foo)
{
    print $foo;
}

 

Hier wird direkt schon bei den Übergabe geprüft, ob der Wert dem Typ eines Integers entspricht. Falls nicht, wird eine Fehlermeldung produziert.

Nun zum eigentlichen Problem vom Ergebnis von var_dump(0123)

Das Ergebnis lautet ‘int(83)’. Warum?

Die führende 0 weist dem Interpreter an von Dezimal auf Oktal umzustellen. Die Basis ist nun nicht mehr 10, sondern 8.

Ein anderes Phänomen erreicht man mit diesem Ausdruck ‘var_dump(0x123)’. Das Ergebnis lautet ‘int(291)’. Hier wird in Hexadezimal gerechnet.

Die Ursache liegt im Kern von PHP. Jede Version von PHP baut auf die Programmiersprache C auf [C].

[php1] http://de1.php.net/manual/de/history.php.php
[php7] http://php.net/
[C] https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/BitOp/hexoctal.html


  • c
  • oktal
  • php
  • var_dump

Share This Post

  • Facebook
  • Twitter
  • Google Plus

About

cqueiser

Christopher Queiser – Freiberuflicher Software-Developer. Spezialisiert in PHP / Symfony in Version 3 und 4 & Wordpress. Seine letzte Herausforderung war ein Master of Science in "IT-Management" FOM.

Related Posts

Leave A Comment

Click here to cancel reply.

Name*

Mail*

Website

Recent Posts

  • SchemaManagementException
  • Das Runde muss ins Eckige
  • MySQL Date NOT NULL DEFAULT ‘0000-00-00’
  • PHP var_dump(0123)
  • PageSpeed

Archives

  • February 2020
  • December 2018
  • August 2017
  • March 2017
  • October 2013

Categories

  • Uncategorized
  • Home
  • Kontakt
  • Impressum
  • Datenschutzerklärung

Blücherstrasse 22, 10961 Berlin, Deutschland

E-mail: kontakt@cqueiser.de

Soziale Präsenz


  • Twitter
  • Google Plus

Copyright © 2016 cqueiser.de

We use cookies to ensure that we give you the best experience on our website. If you continue to use this site we will assume that you are happy with it.OkRead more