Hi,

Ik heb gebruik een importtool om images te importeren uit een tabel en deze te mappen. Nu heb ik data (images) die gescheiden worden door een | teken. Inmiddels heb ik uitgevonden hoe ik de eerste image kan mappen met:
<?php
$images=explode("|",$self);
return array_shift($images);

Echter hoe kan de 2e of 3e image als output krijgen?

Thanks
Dan zal je toch meer info moeten geven. Het enige wat we hier kunnen uithalen is dat het 2° element een image is en dan enkel met jouw weinige info.
Hoe ziet de rest van $self er uit?
Is het 2° deel een bestandsnaam, een base64, een url, een imagebestandsinhoud of nog iets anders

Jan

PS het kan geen kwaad om je bericht even te herlezen.
Bedankt Jan,

Het probleem is dat dit geregeld wordt door een module (mapping) dat kan werken met php.

De data is een url bestand: https://www.***.nl/wp-content/uploads/2016/07/STF-8502-1.jpg|https://www.***.nl/wp-content/uploads/2016/07/***-kabinet-New-York.jpg|https://www.***.nl/wp-content/uploads/2016/07/***-kabinet-New-York-1.jpg|https://www.***.nl/wp-content/uploads/2016/07/STF-8502.jpg|https://www.***.nl/wp-content/uploads/2016/07/***-kabinet-new-york-90-cm.jpg

De output van mijn code = Dynamic value = https://www.***.nl/wp-content/uploads/2016/07/STF-8502-1.jpg
Original value = https://www.***.nl/wp-content/uploads/2016/07/STF-8502-1.jpg|https://www.***.nl/wp-content/uploads/2016/07/***-kabinet-New-York.jpg|https://www.***.nl/wp-content/uploads/2016/07/***-kabinet-New-York-1.jpg|https://www.***.nl/wp-content/uploads/2016/07/STF-8502.jpg|https://www.***.nl/wp-content/uploads/2016/07/***-kabinet-new-york-90-cm.jpg

Heb je wat meer aan deze info Jan?
Bedenk dat array_shift() twee dingen tegelijk doet: array_shift() gooit het eerste element in een array weg (dus hier de eerste URL) en toont daarna het tweede element. Na explode() vind je de afzonderlijke URL's echter gewoon in $images[0], $images[1], $images[2], enzovoort.

Verder is het wel nuttig om te weten hoe je de elementen van een array kunt langslopen met foreach.
array_shift() knipt het eerste element van het array (dat by referency aangeleverd wordt)
en retourneert het eerste element dat je eraf knipte.

https://www.php.net/array-shift

voorbeeld
<?php
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_shift($stack);
?>

nu bevat $fruit de string "orange"
en $stack is nu een array van 3 elmenten:

    [0] => banana
    [1] => apple
    [2] => raspberry


waarbij de indexnummering dus ook is aangepast.

hier was

return $images[0];


misschien beter geweest ipv een array te bewerken dat je daarna weggooit (tenzij die variabele met GLOBAL ook buiten de functie zou bestaan)
Bedankt Ivo, het probleem is echter dat ik de images niet in een array kan plaatsen toch? Eigenlijk moet ik een stuk code hebben die verwijst naar de image voor het | teken en bijv. één na de | teken.
Dat doe je met explode:

<?php
$string = "aap|noot|mies|wim|zus|jet";
$leesplankarray = explode('|', $string);

echo 'eerste = ' . $leesplankarray[0];
echo 'tweede = ' . $leesplankarray[1];
?>

Afhankelijk van het aantal scheidingstekesn (hier dus de | ) bestaat je array uit een zeker aantal elementen.

Let op voor uitzonderlijke situaties waarbij je string begint met het scheidingsteken, er mee eindigt, of als hij helemaal niet voorkomt:

<?php
$string = "|aap|noot|mies|wim|zus|jet";
$string = "aap|noot|mies|wim|zus|jet||||";
$string = "alleen een tekst";
$string = "|nr2|";
?>

$array[1] kan dus eventueel niet bestaan (net als nog hogere indexwaarden).
En de elementen kunnen dus ook een lege string bevatten.
Duidelijk, alleen is de string steeds anders. Dit betreft nu 1 rij uit een tabel maar de import gebruikt wel 50 rijen.
Als dit het bestand is met de urls

https://www.***.nl/wp-content/uploads/2016/07/STF-8502-1.jpg|https://www.***.nl/wp-content/uploads/2016/07/***-kabinet-New-York.jpg|https://www.***.nl/wp-content/uploads/2016/07/***-kabinet-New-York-1.jpg|https://www.***.nl/wp-content/uploads/2016/07/STF-8502.jpg|https://www.***.nl/wp-content/uploads/2016/07/***-kabinet-new-york-90-cm.jpg


Dan lees je dat in in een array.

Die array kan je dan bekijken en de urls naar de afbeeldingen tonen in een <img>

<?php
$imageLinks = explode( '|', file_get_contents('linkdata.php') );

echo '<pre>' . print_r( $imageLinks, TRUE ) . '</pre>';

foreach ( $imageLinks as $link )
{
	echo $link . '<br />';
}

foreach ( $imageLinks as $link )
{
?>

<img src="<?php echo $link; ?>" style="max-width: 200px; height: 100px; "/><br /><br />

<?php
}
?>
Dan loop je langs alle rijen die je ophaalt:

<?php
foreach($rowfromdatabase as $string) {
$array = explode('|', $string);
}
?>
Het ene bedrijf geeft dezelfde afbeelding een beschrijvende naam.
Het andere bedrijf doet geen moeite.

https://www.divanmeubel.nl/wp-content/uploads/2021/05/Starfurn-kabinet-New-York-1.jpg
https://www.divanmeubel.nl/wp-content/uploads/2021/05/Starfurn-kabinet-new-york-90-cm.jpg
https://www.divanmeubel.nl/wp-content/uploads/2021/05/Starfurn-kabinet-New-York.jpg
https://casaestilo.nl/wp-content/uploads/2022/02/STF-8502-1.jpg
https://casaestilo.nl/wp-content/uploads/2022/02/STF-8502.jpg

Reageren