Question

So, I created an array, by manually adding each entry:

$Sections[] = "A.1.4.1";//900 0 900 0 900 900 888 800 800 913 900 900 900
$Sections[] = "A.1.4.2.1";// 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 994 976 954 900 846 779 516 430 344 328 239 150
$Sections[] = "A.1.4.2.2";//900 900 900 900 900 900 900 900 900 900 850 800 750 700 650 600 550 500 376 356 336 227
$Sections[] = "A.1.4.2.3";//1000 1000 1000 1000 900 900 1000 1000 1000 1000 893 803 763 492 516 491 336 336 240 24
$Sections[] = "A.1.4.3";//1000 1000 879 588 560 366 192 867 807 665
$Sections[] = "A.1.4.4";//1000 1000 1000 1000 994 864 620 456 1000 1000 1000
$Sections[] = "A.1.5.1";//900 0 900 800 464
$Sections[] = "A.1.5.2";//a 1000 1000 846 240
$Sections[] = "A.1.5.2";//b 900 900 700 356 
$Sections[] = "A.1.5.3";//1000 879 192
$Sections[] = "A.1.5.4";//1012 922 456

//EU_A
$Sections[] = "A.2.5.1";//a 1048 1048 1048 1048 1004 800 576 378
$Sections[] = "A.2.5.1";//b 1048 1048 1048 1048 1004 820 592 384
$Sections[] = "A.2.5.2";//a 1048 1048  964  828  672 504 340 
$Sections[] = "A.2.5.2";//b 1048 1048  972  836  696 536 376
$Sections[] = "A.2.5.3";//a 1048 1048 1048 1048 1004 800 576 378
$Sections[] = "A.2.5.3";//b  944  944  944  944  944 820 592 384
$Sections[] = "A.2.5.3";//c 1048 1048 1048 1048 1004 820 592 384
$Sections[] = "A.2.5.4";//a 1048 1048 1048  910  776 560 308
$Sections[] = "A.2.5.4";//b  944  944  944  928  804 588 348
$Sections[] = "A.2.5.4";//c 1048 1048 1048  928  804 588 348
$Sections[] = "A.2.7.1";//   560  504  424  304  240 200
$Sections[] = "A.2.7.2";//   520  448  416  360  312 280

//EU_B
$Sections[] = "B.2.4.1";
$Sections[] = "B.2.4.1";
$Sections[] = "B.2.4.2";
$Sections[] = "B.2.4.2";
$Sections[] = "B.3.4.1";
$Sections[] = "B.3.4.1";
$Sections[] = "B.3.4.2";
$Sections[] = "B.3.4.2";

//TR-114
$Sections[] = "A.2.1";
$Sections[] = "A.2.2";

(You can feel free to ignore the comments, this was literally a cut and paste from my code)

The issue I have is that when I do

return $Sections;

and then try to reference any index, I get an error about it being uninitialized.

However, if I do

$return[] = $Sections;

return $return;

I am easily able to reference the indexes.

I've read the documentation for arrays thoroughly, but I do not understand why it does this. I know it works, I would just like to know why.

I can only assume that when the $Sections array is passed to the $return array, the indexes are somehow "refreshed" or "updated."

Edit: I forgot to mention that this is inside a function, that returns the array created inside. I'm sure everyone would have grasped that pretty quickly, what with the return statement and all

Was it helpful?

Solution

If you are attempting to access the indices as $Sections["B.2.4.1"], that will not work as it's not how you've defined them. By using the [] syntax to append to the array, you are creating numeric indices.

Your array really looks like the following, with each [] appended to the end of the array with a numeric index:

$Sections[0] = "A.1.4.1";
$Sections[1] = "A.1.4.2.1";
 // etc

OTHER TIPS

You're not specifying indexes whatsoever in your code. The [] notation means that PHP will insert the element at the end of the array, and assign it a new numeric index.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top