Frage zu Arraykeys

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

Frage zu Arraykeys

Beitrag von cYbercOsmOnauT »

Folgendes kleines Script sei gegeben:

Code: Alles auswählen

<?php
$a = array();
$b = '12';
$a[$b] = $b;
var_dump($a);
?>
Heraus kommt:

Code: Alles auswählen

array(1) {
  [12]=>
  string(2) "12"
}
Wie das Kennerauge sofort sieht, ist der Key als Integer und der Wert als String gespeichert. Ich jedoch möchte das der Key, auch wenn er nur aus Ziffern besteht, einen Stringwert beinhaltet. PHP scheint das beim Setzen des Keys intern in Integer umzuwandeln falls eine reine Zahl bekommt. Versuche mit strval(), "$b" oder (string) oder gar ganz verrückte Sachen wie str_replace('a', '', "a$b") schlugen fehl.

Hat jemand noch eine andere Idee oder muss ich mit einem Integer Keywert leben?

(Bitte jetzt keine "Wozu brauchste das denn?" Postings. Ich brauch es halt.)

Grüße,
Tekin
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Dazu sagt php.net:
A key may be either an integer or a string. If a key is the standard representation of an integer, it will be interpreted as such (i.e. "8" will be interpreted as 8, while "08" will be interpreted as "08"). Floats in key are truncated to integer. There are no different indexed and associative array types in PHP; there is only one array type, which can both contain integer and string indices.
Also wirst du damit leben müssen.

Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

Beitrag von cYbercOsmOnauT »

Das ist gelinde gesagt großer Mist.. ich hab ein Array das mit 01 02 03 anfängt und mit 10 11 12 ... weitergeht als Arraykeys.. die Keys vergleiche ich typensicher mit einem anderen Wert. Dies geht natürlich nicht wenn die ersten 9 Keys Strings sind und der Rest Integer. Also muss ein Workaround her. -würg-

Danke für das Quote Philipp.
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Den Key einfach grundsätzlich in 'nen String umwandeln?

Gruß, Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

Beitrag von cYbercOsmOnauT »

Geht ja leider nicht, weil PHP intern den Key als Integer nutzt sobald er nur aus Ziffern besteht und eine echte Zahl darstellt (also ohne beginnende 0 ganz links, siehe Deinen Quote).
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
Antworten

Zurück zu „Coding & Technik“