Come da titolo ho esigenza di creare un array multidimensionale in modo da poter dividere il contenuto in base a dei valori uguali nelle tabella. Ho una struttura della tabella così:
Codice:
Campo Tipo Null Predefinito
lyric_id mediumint(8) No
lyric_name varchar(255) No
lyric_album mediumint(8) No 0
lyric_text text No
lyric_music varchar(255) No
lyric_by varchar(255) No
lyric_cd tinyint(1) No 0
lyric_order tinyint(1) No 0
Dove l'indice della'array sarà lyric_cd, in modo da dividere il tutto per CD. Poi estraggo i dati con questa query:
Codice PHP:
$sql = 'SELECT lyric_id, lyric_name, lyric_album, lyric_cd, lyric_order
FROM ' . BANDS_LYRICS_TABLE . '
WHERE lyric_album = ' . $album . '
ORDER BY lyric_cd, lyric_order';
Cerco di creare l'array in questo modo:
Codice PHP:
while($row = $db->sql_fetchrow($result))
{
$lyric[$row['lyric_cd']] = array(
'id' => $row['lyric_id'],
'name' => $row['lyric_name'],
);
}
Poi faccio due foreach in questo modo:
Codice PHP:
foreach ($lyric as $cd => $data)
{
echo 'CD: ' . $cd . "\n";
foreach ($data as $item => $value)
{
echo $item . ' ' . $value . " - ";
}
}
ma stampa tutto sbagliato, perchè l'array generato è questo:
Codice:
Array
(
[1] => Array
(
[id] => 1
[name] => Blank File
)
)
Array
(
[1] => Array
(
[id] => 2
[name] => My Land
)
)
Array
(
[1] => Array
(
[id] => 3
[name] => 8th Commandment
)
)
Array
(
[1] => Array
(
[id] => 4
[name] => Replica
)
)
Array
(
[1] => Array
(
[id] => 5
[name] => Kingdom for a Heart
)
)
Array
(
[1] => Array
(
[id] => 6
[name] => Fullmoon
)
)
Array
(
[1] => Array
(
[id] => 6
[name] => Fullmoon
)
[2] => Array
(
[id] => 7
[name] => Letter to Dana
)
)
Array
(
[1] => Array
(
[id] => 6
[name] => Fullmoon
)
[2] => Array
(
[id] => 8
[name] => UnOpened
)
)
Array
(
[1] => Array
(
[id] => 6
[name] => Fullmoon
)
[2] => Array
(
[id] => 9
[name] => Picturing the Past
)
)
Array
(
[1] => Array
(
[id] => 6
[name] => Fullmoon
)
[2] => Array
(
[id] => 10
[name] => Destruction Preventer
)
)
Array
(
[1] => Array
(
[id] => 6
[name] => Fullmoon
)
[2] => Array
(
[id] => 11
[name] => Mary-Lou
)
)
Come devo strutturare nel while() per la creazione dell'array correttamente in modo da poterlo poi scorrere e stampare per CD il contenuto?
Grazie in anticipo
Ho risolto così:
Codice PHP:
$sql = 'SELECT lyric_id, lyric_name, lyric_album, lyric_cd, lyric_order, LEFT(TRIM(lyric_text), 1) AS s_link
FROM ' . BANDS_LYRICS_TABLE . '
WHERE lyric_album = ' . $album . '
ORDER BY lyric_cd, lyric_order';
$result = $db->sql_query($sql);
while($row = $db->sql_fetchrow($result))
{
$lyric[$row['lyric_cd']][$row['lyric_id']] = $row['lyric_name'];
}
foreach($lyric as $cd => $data)
{
echo 'CD: ' . $cd . "\n";
foreach ($data as $item => $value)
{
echo $item . ' ' . $value . " - ";
}
}