Avatar billede madsleejensen Nybegynder
22. juli 2007 - 13:00 Der er 3 kommentarer og
1 løsning

2 stykker kode der undre mig lidt

Hej har et par stykker koder som undre mig lidt

1:

$a = 010;
$b = 10;
print $a + b;

giver 18 hvorfor ? ...
kan forstå hvis den tog a som binær ved at sige 0100 men gør den da det ?

2:
floats som array key ?
print_r( array(0.001 => "A", .1 => "C" ));

giver 0=>C

hvorfor ? er der nogen der kan beskrive hvad der sker ?
kan regne ud 0 bliver dannet ud fra at man ikke kan have floats som keys og derved bliver castede til en int som er nul ?

hvis nogen kunne hjælpe mig af med denne tvivl ville jeg være glad :)

på forhånd tak!
Avatar billede nicklasb Nybegynder
22. juli 2007 - 13:19 #1
Når du (i PHP) sætter et 0 (nul) forest i en integer, fortæller du, at tallet er skrevet som octal. (Ligeledes kan du ved at sætte 0x foran tallet, fortælle at tallet skal forstås som hexdecimal.)

010 (octal) = 8 (decimal)
8 (decimal) + 10 (decimal) = 18 (decimal)

Læs eventuelt mere om integers på http://dk2.php.net/int (hvor flere eksempler på brugen af hexdecimaler og octaler er givet)
Avatar billede nicklasb Nybegynder
22. juli 2007 - 13:26 #2
Forklaringen på den anden, er som du selv nævner, at floats ikke kan være indeks i et array.

I stedet for at skrive

$array = array(0.001 => "A", .1 => "C" );

kan du skrive
$array = array();
$array[0.001] = "A";
$array[.1]    = "C";

Ved
$array[0.001] = "A";
typecastes 0.001 til en integer (ved at fjerne decimalen), så der står
$array[0] = "A";

Det samme gælder for
$array[.1]    = "C";
som bliver til
$array[0]    = "C";

Da to elementer i arrayet ikke kan have samme indeks, vil den sidste overskrive den første, hvorfor det eneste element i arrayet er [0] => "C"
Avatar billede madsleejensen Nybegynder
22. juli 2007 - 13:46 #3
ahhh perfekt så blev det sat på plads!
mange tak smid et svar :)
Avatar billede nicklasb Nybegynder
22. juli 2007 - 17:33 #4
 
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester