Skifte innhold på deler av array

Jeg har denne arrayen

$tekst = array(
	0=>"Sara spiser skoleboller med rosiner til lunch. Hun spiser skoleboller hver dag.",
	1=>"Frida liker fiskeboller og spiser fiskeboller fra lopphavet hver fredag",
	2=>"Sara liker ikke fiskeboller og kaster fiskebollene fra lopphavet på lopphavet",
	3=>"Sara og Frida spiser seg mette på skoleboller og fiskeboller"
);

så har jeg denne arrayen som inneholder hva som skal skiftes ut av array $tekst

$skift = array(
	"skoleboller"=>"boller",
	"fiskeboller"=>"fisk"
);

så har jeg denne arrayen som inneholder hva som ikke skal skiftes ut i arrayen $tekst som skal overstyre arrayen $skift

$behold = array(
	0=>"skoleboller med rosiner",
	1=>"fiskeboller fra lopphavet",
	2=>"fiskebollene fra lopphavet"
);

og til slutt ende opp med ny array

$ny_tekst = array(
	0=>"Sara spiser skoleboller med rosiner til lunch. Hun spiser boller hver dag.",
	1=>"Frida liker fisk og spiser fiskeboller fra lopphavet hver fredag",
	2=>"Sara liker ikke fisk og kaster fiskebollene fra lopphavet på lopphavet",
	3=>"Sara og Frida spiser seg mette på boller og fisk"
);

Hvordan kan dette kodes for å bruke minst mulig serverkraft?

Okei da, her er en løsning iallefall. Kan jo enkelt optimeres med å endre md5() til noe annet som er kjappere - samt loope i første array for ikke regenerere. Men - det klarer du sikkert selv å dille med CPU burde ikke være noe utfordring. Oftere billigere å kjøpe større CPU en å lage verdens raskeste kode.

<?php $tekst = array( 0=>"Sara spiser skoleboller med rosiner til lunch. Hun spiser skoleboller hver dag.", 1=>"Frida liker fiskeboller og spiser fiskeboller fra lopphavet hver fredag", 2=>"Sara liker ikke fiskeboller og kaster fiskebollene fra lopphavet på lopphavet", 3=>"Sara og Frida spiser seg mette på skoleboller og fiskeboller" ); $skift = array( "skoleboller"=>"boller", "fiskeboller"=>"fisk" ); $behold = array( 0=>"skoleboller med rosiner", 1=>"fiskeboller fra lopphavet", 2=>"fiskebollene fra lopphavet" ); $ny_tekst = array( 0=>"Sara spiser skoleboller med rosiner til lunch. Hun spiser boller hver dag.", 1=>"Frida liker fisk og spiser fiskeboller fra lopphavet hver fredag", 2=>"Sara liker ikke fisk og kaster fiskebollene fra lopphavet på lopphavet", 3=>"Sara og Frida spiser seg mette på boller og fisk" ); foreach($behold AS $bk=>$bv){ foreach($tekst AS $tk=>$tv){ $tekst[$tk] = str_replace($bv,'{{' . md5($bv) . '}}',$tekst[$tk]); } } foreach($skift AS $sk=>$sv){ foreach($tekst AS $tk=>$tv){ $tekst[$tk] = str_replace($sk,$sv,$tekst[$tk]); } } foreach($behold AS $bk=>$bv){ foreach($tekst AS $tk=>$tv){ $tekst[$tk] = str_replace('{{' . md5($bv) . '}}',$bv,$tekst[$tk]); } } foreach($tekst AS $tk=>$tv){ echo $tv . '
'; }
1 Like

Denne løsningen så enklere ut enn det jeg selv kom opp med. Jeg begynte å rote skikkelig. Takk :slight_smile: