Skifte innhold på deler av array

En tråd i 'PHP, SQL og databaser' startet av kongen, 19 Feb 2016.

  1. kongen

    kongen kongemedlem

    Innlegg:
    2.748
    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?
     
  2. Kim Steinhaug

    Kim Steinhaug New Member

    Innlegg:
    18
    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 liker dette.
  3. kongen

    kongen kongemedlem

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

Del denne siden