Tom der andere: Array mit Strings und Zahlen - ist das sauber?

Moin,

ich hab ein Problem, das eigentlich gar keins ist. Es tut nämlich alles. Ich frage mich nur, ob das so "sauber" ist. Oder sollte man Zahlen erst richtig als Zahlen definieren (also erst mal $zahl = (int)$array['zahl']; machen)?

Beispiel:

<?php
$array = array("text"=>"Hallo","zahl"=>3);
echo "Text: " . $array['text']."<br>";
echo "Zahl verdoppelt: " . $array['zahl'] * 2;
?>

(Es tut sogar, wenn man $array = array("text"=>"Hallo","zahl"=>"3"); schreibt.)

Versteht jemand, was ich meine?
Danke, Tom

  1. Hallo,

    $array = array("text"=>"Hallo","zahl"=>3);

    Gemaess meinem Verstaendnis von
    http://www.php.net/manual/de/language.types.php
    http://www.php.net/manual/de/language.types.type-juggling.php
    http://www.php.net/manual/de/language.types.string.php#language.types.string.conversion
    ist Dein Vorgehen voellig legal.

    Ob es uebersichtlich, sinnvoll u.s.w. ist, steht auf einem andern Blatt...

    Gruesse,

    Thomas

    --
    Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
    Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
    Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
    1. Hello,

      $array = array("text"=>"Hallo","zahl"=>3);

      Gemaess meinem Verstaendnis von
      http://www.php.net/manual/de/language.types.php
      http://www.php.net/manual/de/language.types.type-juggling.php
      http://www.php.net/manual/de/language.types.string.php#language.types.string.conversion
      ist Dein Vorgehen voellig legal.

      Ob es uebersichtlich, sinnvoll u.s.w. ist, steht auf einem andern Blatt...

      Tom (der eine) sieht das fast genauso.

      Innerhalb von PHP gibt es da nur gaaaanz selten Probleme. Die automatische Typumwandlung funktioniert erste Sahne. Das liegt im wesentlichen daran, dass PHP für Stringoperationen andere Operatoren verwendet, als für numerische Operationen.

      Schwirigkeiten wird man bei Bitmuster-Operationen erwarten können.

      "1" & "2" dürfte etwas anderes ergeben als 1 & 2
      http://de2.php.net/manual/de/language.operators.bitwise.php

      Habe es aber noch nicht ausprobiert.

      Da kann es dann aber sinnvoll sein, Typecasting einzusetzen.

      $eins = "1";
      $einz = (int)$eins;

      Wenn man nun gettype() auf beide anwendet, müsste 'was unterschiedliches herauskommen.

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      1. Moin,

        OK, ich danke Euch.

        Tom