lets say from zero to more is important level of the value
# very imporant
0 =>
array
'index' => string 'helloworld:Index' (length=16)
404 => string 'helloworld:Missinga' (length=19)
503 => string 'helloworld:Offline' (length=18)
'nojs' => string 'helloworld:Nojs' (length=15)
'blog' => string 'helloworld:blog' (length=15)
# important
1 =>
array
'index' => string 'helloworld:Index' (length=16)
404 => string 'helloworld:Missingb' (length=19)
503 => string 'helloworld:Offline' (length=18)
'nojs' => string 'helloworld:Nojs' (length=15)
'blogb' => string 'helloworld:blog' (length=15)
# not that important
2 =>
array
'index' => string 'helloworld:Index' (length=16)
404 => string 'helloworld:Missingc' (length=19)
503 => string 'helloworld:Offline' (length=18)
'nojs' => string 'helloworld:Nojs' (length=15)
'more' => string 'helloworld:Nojs' (length=15)
# so on
join them into one array to something like this
array
'index' => string 'helloworld:Index' (length=16) # from 0 ( others same key )
404 => string 'helloworld:Missinga' (length=19) # from 0 ( others same key )
503 => string 'helloworld:Offline' (length=18) # from 0 ( others same key )
'nojs' => string 'helloworld:Nojs' (length=15) # from 0 ( others same key )
'blog' => string 'helloworld:blog' (length=15) # from 0 ( new )
'blogb' => string 'helloworld:blog' (length=15) # from 1 ( new )
'more' => string 'helloworld:Nojs' (length=15) # from 2 ( new )
question what is the best way we can merge multiple into array but something like this?
thanks for looking in
Adam Ramadhan
You can do this
$array1 + $array2 + array3;
Unlike array_merge()
, the one with the most importance goes first, and numeric keys are respected.
If, like in your question, you are merging array elements in the same array, you can do
$result = array();
foreach ($array as $value) { $result += $value; }
Just use array_merge with your three arrays as parameters. The most important one should be the last one, so array_merge($array2, $array1, $array0)
should work fine. The numeric keys might make a problem, though:
If, however, the arrays contain numeric keys, the later value will not overwrite the original value, but will be appended.
You might consider converting them to strings.
$new_array = array();
foreach($old_array as $level => $key_array) {
foreach($key_array as $key => $value) {
if(!isset($new_array[$key])) {
$new_array[$key] = $value;
}
}
}
This will only work, if the "old" array is sorted by importance like in your example.