I’m having the following scenario:
class A { public static $arr=array(1,2); }
class B extends A { public static $arr=array(3,4); }
Is there any way to combine these 2 arrays so B::$arr is 1,2,3,4?
I don’t need to alter these arrays, but I can’t declare them als const, as PHP doesn’t allow const arrays.https://stackoverflow.com/questions/ask
The PHP manual states, that I can only assign strings and constants, so parent::$arr + array(1,2) won’t work, but I think it should be possible to do this.
You’re correct, you can only assign literals and constants when declaring a static variable. The work-around would be to assign the value in code just after the class is declared. In Java you could do this nicely with a static initialiser, but PHP doesn’t support those either, so we have to define and call a method ourselves:
Also note the use of
array_mergeinstead of the union (+) operator – the union operator won’t combine the arrays as you intend, as they have identical numerical keys – the first isarray(0=>1, 1=>2), second isarray(0=>3, 1=>4); the union of them will only contain each key once, so you’ll either end up with(1,2)or(3,4)depending on the order you union them.