Я новичок в многомерных массивах и столкнулся с проблемой и не могу обернуть вокруг себя голову. Я пытался превратить это:Многомерный массив PHP/MySQL
Array ( [1] => Array ( [cat_id] => 1 [cat_name] => Schilderijen [cat_description] => Omschrijving bij schilderijen [artists] => Array ( [artist_id] => 1 [lastName] => ..some value ) ) ) Array ( [1] => Array ( [cat_id] => 1 [cat_name] => Schilderijen [cat_description] => Omschrijving bij schilderijen [artists] => Array ( [artist_id] => 4 [lastName] => ..some value ) ) )
во что-то вроде этого, так что я могу назвать категорию и список соответствующих художников под:
Array ( [1] => Array ( [cat_id] => 1 [cat_name] => Schilderijen [cat_description] => Omschrijving bij schilderijen [artists] => Array ( [artist_id] => 1 [lastName] => ..some value [artist_id] => 4 [lastName] => ..some value ) ) )
Я использую следующий код:
$cat_id = 1;
$query = "SELECT * FROM `categorie_has_artists` ";
$query .= " JOIN `categories` ON categories.cat_id = categorie_has_artists.cat_id AND categorie_has_artists.cat_id = :cat_id";
$query .= " JOIN `artists` ON artists.artist_id = categorie_has_artists.artist_id";
$stmt = $dbh->prepare($query);
$stmt->bindParam(':cat_id', $cat_id, PDO::PARAM_INT);
$stmt->execute();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$array[$row['cat_id']] = array('cat_id' => $row['cat_id'], 'cat_name' => $row['cat_name'], 'cat_description' => $row['cat_description'], 'artist' => array());
$array[$row['cat_id']]['artist'][] = array('artist_id'=>$row['artist_id'], 'lastName' => $row['lastName']);
}
первого массив должны быть вне цикла, второй должен быть в цикле. make '$ isSet = false;' out loop, тогда внутри цикла добавьте 'if (! $ isSet) {firstArray ...; $ isSet = TRUE; } else {secondArray ...; } ' – SSpoke
Вы не должны иметь один и тот же ключ массива (artist_id, lastName) с разными значениями в одном массиве. –