Just setting up some test data...
$data = array(
"Category" => array(
"id" => 2,
"name" => "car"
),
"Ds" => array(
"ds_id" => 7,
"content" => array(
"title" => "Bla bla bla",
"desc" => "Lots of bla bla bla",
"name" => "another name"
)
)
);
And very simple code to create a completely flat array.
function flatten($data, &$flat = array()) {
foreach ($data as $k => $el) {
if (is_array($el)) {
flatten($el, $flat);
}
else {
/* In case you need to deal with the possibility of keys on different levels,
being the same, this part renames them to "key", "key2", "key3" */
if (array_key_exists($k, $flat)) {
$i = 2;
while (array_key_exists($k.$i, $flat))
$i = intval($i) + 1;
}
else
$i = "";
$flat[$k.$i] = $el;
}
}
}
$flat = array();
flatten($data, $flat);
print_r($flat);
And in case you want a 2-dimensional array like you said,
foreach ($topLevelArray as $k => $el) {
if (is_array($el))
$topLevelArray[$k] = flatten($el);
}