Hoi Hoi,


Ik heb een vraagje over de explode functie.
Als ik een explode uitvoer dan word deze in een associative array gezet.
Kan dit ook naar een simple array vertaald worden?


<?php
//explode output standaard
Array ( [0] => 123 [1] => 456 [2] => 789 );


//de output die ik graag zou krijgen
Array ( '123',  '456', '789');
?>
Bruh.

Voordat je blindelings antwoord geeft op een vraag zou je natuurlijk ook na kunnen denken over de vraagstelling zelf, of deze zinnig is en of de ingeslagen weg wel hout snijdt. Tenzij je enige doel is om (antwoorden op de precieze vraag) te faciliteren kan ik mij hier misschien nog iets bij voorstellen, maar dit forum zou toch wat verder moeten gaan dan dat...

@Yoeri dumpt een array, en kreeg mogelijk meer te zien dan hij had verwacht, maar elk (fair enough, niet-leeg) array heeft indexen, dus het is logisch en accuraat dat je deze dan ook te zien krijgt.

Er bestaat niet zoiets als een "simpel array zonder indexen", dus waarom zou je een soort van dumpfunctionaliteit hebben die dit weerspiegelt? Tenzij je een soort van opmaak wilt toepassen op je dump? Maar zelfs dan, het nut van een dump lijkt mij nog steeds dat je de precieze inhoud weergeeft, hier inhoudelijke aanpassingen op uit gaan voeren lijkt mij niet wenselijk.

Misschien kan de topicstarter duidelijkheid verschaffen over hoe hij dit denkt te kunnen gebruiken?

Als dit alles bedoeld is om de leesbaarheid te verbeteren kun je er beter simpelweg <pre></pre> omheen zetten:
<?php
// output escaping
function escape($in) {
    return htmlspecialchars($in, ENT_QUOTES, 'UTF-8');
}

// generieke dumpfunctie, je zou dit nog uit kunnen breiden met andere is_...() controles
function dump($in) {
    if (is_array($in)) {
        $in = print_r($in, true);
    }
    echo '<pre>'.escape($in).'</pre>';
}

// test array
$test = array(
    'aap',
    'hello' => 'world',
    'html' => '<b>bold</b>',
    4,
);

// output header
header('Content-Type: text/html; charset=UTF-8');
// dump gegevens
dump($test);
?>


Zoals eerder aangegeven, de twee arrays zijn ook niet equivalent. De een bevat een aantal integers, de ander een aantal strings. Ook het aanpassen van het array waarbij de indruk wordt gewekt dat de inhoud andere types heeft lijkt mij op zijn zachtst gezegd misleidend.

Naar aanleiding van @AdFundums code hierboven: wat is het idee om hier nog de prefix '$arr2 = ...' aan toe te voegen? En met welk doel? Om dit te evalueren? Om PHP-code te genereren? Beide lijken mij verre van goede ideeën. Dit lijkt mij voortborduren op een slecht ontwerp. Misschien heb je met jouw reactie wel een antwoord gegeven op de vraag, maar tegelijkertijd stuur je iemand mogelijk compleet de verkeerde kant op.

Daarnaast zou je bij het geven van een "oplossing" ook rekening kunnen houden met een bredere inzetbaarheid van de aangeleverde code, en niet enkel iets aandragen dat weliswaar voor het gegeven voorbeeld werkt, maar in andere gevallen gewoon een verkeerd resultaat oplevert. Ik denk niet dat vragenstellers echt geholpen worden/zijn met ad hoc oplossingen.
Je maakt het er niet leuker op door op voorhand iedereen te diskwalificeren op basis van eigen aannames ("gaat niet ver genoeg", "misleidend", "slecht ontwerp", "niet wenselijk") zonder verdere uitleg.

Waar staat dat het om HTML gaat?
Waarom is de toevoeging $arrX = een voortburen op een slecht ontwerp, in dit geval van Ariën?
Hoezo wordt iemand de verkeerde kant op gestuurd als alleen de vraag beantwoord wordt?
Wat weet jij meer van de context, zonder het hier gevraagd te hebben?
Waarom moet het antwoord zo zijn dat het meer beantwoordt dan wat gevraagd wordt?

Ik zou denken dat als je serieus meer wilt weten over de context, dat je dat dan vraagt aan de vragensteller, in plaats van dat je anderen probeert af te troeven. Dat lijkt mij nou een goed idee.
** knip **




De vraag is:

Wil Yoeri nou code outputten, of wilt hij een array in het geheugen opslaan zonder indexen (wat dus niet kan)? Het is wel leuk dat er een draai aan is gegeven om dit in de code te outputten. Maar toch ben ik benieuwd naar Yoeri's reactie.

Reageren