Fix array keys for multidimensional array
Posted: Fri Oct 25, 2013 12:41 pm
I have an interesting dilemma. I have an array that looks like:
What I'm trying to do is get the array keys for each array object (other than 'folders') to be a numeric key and make it look like:
This is a dynamic array so it could be larger or smaller. I spent some time messing with the array_values function and making it recursive but I keep getting ALL keys replaced not just the new array object.
Here's what I was toying with:
But that outputs:
Code: Select all
Array
(
[ArrayName1] => Array
(
[name] => ArrayName1
[folder_path] =>
[description] =>
[metadata] =>
[folders] => Array
(
[ArrayName2] => Array
(
[name] => ArrayName2
[folder_path] =>
[description] =>
[metadata] =>
[folders] => Array
(
[ArrayName3] => Array
(
[name] => ArrayName3
[folder_path] =>
[description] =>
[metadata] =>
[folders] =>
)
[ArrayName4] => Array
(
[name] => ArrayName4
[folder_path] =>
[description] =>
[metadata] =>
[folders] =>
)
)
)
)
)
Code: Select all
Array
(
[0] => Array
(
[name] => ArrayName1
[folder_path] =>
[description] =>
[metadata] =>
[folders] => Array
(
[0] => Array
(
[name] => ArrayName2
[folder_path] =>
[description] =>
[metadata] =>
[folders] => Array
(
[0] => Array
(
[name] => ArrayName3
[folder_path] =>
[description] =>
[metadata] =>
[folders] =>
)
[1] => Array
(
[name] => ArrayName4
[folder_path] =>
[description] =>
[metadata] =>
[folders] =>
)
)
)
)
)
Here's what I was toying with:
Code: Select all
function fix_keys($array) {
foreach ($array as $k => $val)
{
if(is_array($val))
{
$array[$k] = $this->fix_keys($val);
}
}
return array_values($array);
Code: Select all
Array
(
[0] => Array
(
[0] => ArrayValue1
[1] =>
[2] =>
[3] =>
[4] => Array
(
[0] => Array
(
[0] => ArrayValue3
[1] =>
[2] =>
[3] =>
[4] => Array
(
[0] => Array
(
[0] => ArrayValue3
[1] =>
[2] =>
[3] =>
[4] =>
)