Ho già due funzioni che uso quando mi serve di "spianare" un array annidato
LineArray restituisce semplicemente i valori in un array non associativo
LineArrayAssoc restituisce i valori con le relative chiavi
Ecco il codice con un esempio
Codice PHP:
<?php
function LineArray($myArray)
{
$result = array();
if(!is_array($myArray))
{
$result[]=$myArray;
} else {
foreach($myArray as $key => $value)
{
$result = array_merge($result,LineArray($value));
}
}
return $result;
}
function LineArrayAssoc($myArray)
{
$result = array();
if(is_array($myArray))
{
foreach($myArray as $key => $value)
{
if(!is_array($value))
{
$elem=array();
$elem[$key]=$value;
$result[] = $elem;
} else {
$result = array_merge($result,LineArrayAssoc($value));
}
}
}
return $result;
}
$a = array(
"a" => 1,
"b" => array(
"c" => 2,
"d" => 3
),
"e" => 4,
"f" => array(
"g" => "valore",
"e" => array(
"h" => 5,
"i" => 6
),
"l" => 7
)
);
$x = 1;
$lined = LineArray($a);
echo "<h3>Allineamento semplice</h3>";
foreach($lined as $key=>$value)
echo "$key => $value
";
$lined = LineArrayAssoc($a);
echo "<h3>Allineamento con chiavi</h3>";
foreach($lined as $line)
foreach($line as $key=>$value)
echo "$key => $value
";
?>
Il risultato che vedi poi è:
Allineamento semplice
0 => 1
1 => 2
2 => 3
3 => 4
4 => valore
5 => 5
6 => 6
7 => 7
Allineamento con chiavi
a => 1
c => 2
d => 3
e => 4
g => valore
h => 5
i => 6
l => 7