Skifte innhold på deler av array

kongen

kongemedlem
Jeg har denne arrayen

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"
);

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

PHP:
$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

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

og til slutt ende opp med ny array

PHP:
$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?
 

Kim Steinhaug

New Member
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 . '<br>';
}
 

kongen

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