De inhoud van de array splitten(php5:explode) en als output weer een array
Door
Martijn Coomans
op 28-12-2013 15:04
gewijzigd op 28-12-2013 15:06
1.395 views
Hallo,
Ik werk aan een image galley, deze werkte goed toen ik de split() functie gebruikte om mijn array van images te splitten op de '/', maar nu ik de website host op een host die de nieuwste php gebruikt, wordt er afgeraden om split() te gebruiken. Ik heb gezocht naar een oplossing, dit zou explode() zijn. Maar nu krijg ik een error, dat ik een array geef in plaats van een string. Mijn vraag is dus of er een mogelijkheid is om de inhoud van de array te splitten en als output weer een array te hebben?
Ik heb zelf geprobeerd hiervoor een functie te schrijven maar deze is om een voor mij onbekende reden leeg.
hier is de functie:
<?php
function splitArray($array)
{
$arrayLength = count($array);
Dat was juist het probleem, dat ik alle waarden in de array wilde splitten, dit ging niet omdat explode niet werkt met een array en als je dit probeert te verhelpen met implode dan wordt je array een string en ben je dus je array kwijt en heb je nog maar 1 waarde. Maar ik ben er met hulp van vrienden uitgekomen:
Ik had heel dom in het begin $toSplit in $array[$x} opgeslagen in plaats van andersom. Bovenstaande functie is een werkende functie om de inhoud van je array te splitten op '/' en geeft als output weer een array.
Dus eerst Array([0]=> images/image1.jpg [1]=> images/image2.jpg) en als output Array([0]=> image1.jpg [1]=> image2.jpg).
Ik heb de oplossing gelukkig al gevonden, ik hoop dat iemand anders hier ook wat aan heeft, als er suggesties zijn voor een betere en makkelijkere oplossing hoor ik het graag!
/*> $array is nu
Array(
[0] => 'world'
[1] => 'ipsum'
[2] => 'bar'
)
*/
?>
En als ik naar je code kijk heb je waarschijnlijk iets als:
<?php
$array = array('path/to/file.png', 'to/img.gif', 'path/img.jpg');
?>
En dan wil je de bestandsnaam weten, dan kun je het nog mooier doen door [php]basename[/php] te gebruiken:
<?php
$array = array_map('basename', $array);
/*> $array is nu
Array(
[0] => 'file.png'
[1] => 'img.gif'
[2] => 'img.jpg'
)
*/
?>
[hr]
En als laatste tip, gebruik de [php]foreach[/php] loop ipv de [php]for[/php] loop. (wanneer je niet de bovenstaande technieken wilt gebruiken)