Goede avond,


Ik heb een verkorte array PHP code maar wil deze graag naar de lange codering omzetten.
Door deze in de lange methode te zetten kan ik leren hoe dit precies werkt.

<?php
//deze shortcode wil ik graag in de lange versie zien
$output[$data['category']][] = $data['type'];

//dit is wat ik zelf dacht
$output = $data['category'] = array($data['type']);
?>
<?php
$output = array(
$data['category']=>
array($data['type'])
);
?>
Zoiets? Geen idee wat je wil aangezien het nergens op slaat zo ;-)
Wat ben je allemaal aan het doen?

$output is blijkbaar al een array, want je gaat er iets aan toevoegen (maar waarschijnlijk maakt PHP 'm ook wel on-the-fly voor je aan ...)

$output[$data['category']] is al een key in deze array, met een array als waarde (want je gaat er iets aan toevoegen) (maar waarsc...).

En aan die array $output[$data['category']] voeg je dus een waarde $data['type'] toe.

Kortom: ik hoop dat hierboven iets staat van:
<?php
$output = array(); //of in shortcode = [];
$output[$data['category']] = array(); //of in shortcode = [];
//en dan misschien nog iets anders, en dan uiteindelijk
$output[$data['category']][] = $data['type'];
?>

Behalve de initialisatie van de arrays valt hier dus weinig aan short/long notatie te veranderen.

Tenzij je die $array[] = $x notatie "niet mooi" vindt om een waarde toe te voegen. Dan zou je array_push($array,$x) kunnen gebruiken. Maar of het daar leesbaarder van wordt ...
Yoeri Achterbergen op 19/02/2020 00:59:23

<?php
//deze shortcode wil ik graag in de lange versie zien
$output[$data['category']][] = $data['type'];

//dit is wat ik zelf dacht
$output = $data['category'] = array($data['type']);
?>


Errr... Maar beide codesnippets doen compleet verschillende dingen?

En in het twee fragment wil je een array toekennen aan een waarde (i.p.v. een variabele), dat gaat waarschijnlijk ook niet werken. Plus je bent daar een hoop dingen aan het kopiƫren zonder toegevoegde waarde.

Als je in $output typen wilt onderbrengen in categorieƫn dan heb je dat subarray nodig... je ontwerpt dit soort datastructuren op een zodanige manier dat alle data die je nodig hebt precies past, uitgebreider hoeft niet, simpeler kan niet.
als ik de longcode gebruik krijg ik alleen het laatste resultaat in de array.
Gebruik ik de shortcode krijg ik alle data netjes in de array.
Hoe kan dit? Het zou toch het zelfde moeten zijn?

<?php
while ($data = mysqli_fetch_assoc($result)) {
 $output[$data['category']][] = $data['type'];
}
?>





<?php
while ($data = mysqli_fetch_assoc($result)) {
    //alleen laatste database result
    $output = array($data['category'] => array($data['type']));
}
?>

In de tweede snippet wordt elke stap van de loop $output overschreven.

Reageren