Tällä funktiolla voi yhdistää yhden tai useamman arrayn keskelle "pääarrayta" siten, että niistä tulee osa sitä.
Funktion argumnentit:
1. Array, johon muutokset tehdään
2. Moniulotteinen array, jonka jokainen arvo sisältää yhden arrayn.
3. Array, jossa on muokattavien arrayn avaimet aakkosjärjestyksessä.
Funktio arrays_mixing:
<?php function arrays_mixing($array,$array2,$keys){ function mix($arr,$arr2,$b){ for($i=$b+1;$i<count($arr);$i++){ # lisätään arrayn loppuosa osaksi array2 arrayta array_push($arr2,$arr[$i]); } # lisätään muunneltu array2 arrayn määriteltyyn kohtaan array_splice($arr,$b,count($arr2)-1,$arr2); return $arr; } # käännetään lisättävä array ja muokattavat avaimet takaperin # keys-arrayssa olevat avaimet pysyy oikeina, kun muokkaus aloitetaan perimmäisestä arvosta $keys = array_reverse($keys); $array2 = array_reverse($array2); for($i=0;$i<count($keys);$i++){ $array = mix($array,$array2[$i],$keys[$i]); } return $array; } ?>
Funktion käyttö. Tässä esimerkissä poimitaan muokattavat arvot, jos löytyy välilyönti :
<?php $eka =array( 0 => "yksi", 1 => "kaksi kolme", 2 => "neljä viisi kuusi", 3 => "seitsemän", 4 => "kahdeksan yhdeksän", 5 => "kymmenen", 6 => "yksitoista kaksitoista kolmetoista", 7 => "neljätoista", 8 => "viisitoista", 9 => "kuusitoista"); $toka = array( 0 => array("kaksi","kolme"), 1 => array("neljä","viisi","kuusi"), 2 => array("kahdeksan","yhdeksän"), 3 => array("yksitoista","kaksitoista","kolmetoista")); $keys = array(); for($i=0;$i<count($eka);$i++){ $eka[$i] = trim($eka[$i]); if(strpos($eka[$i]," ",1)){ array_push($keys,$i); } } $eka = arrays_mixing($eka,$toka,$keys); ?>
Käyttötarkoituksesta: Tätä funktiota olen käyttänyt silloin, kun olen halunnut pilkkoa arrayn arvoissa olevia ylipitkiä kirjoituksia useampaan arrayn arvoon. Ja tällä olen sitten lisännyt muutetut arvot uusina riveinä arrayhyn.
Ps. Muutin tämän funktion käyttöä hiukan yksinkertaisemmaksi ja siirsin osan toiminnoista funktion sisään. Samalla tästä tuli pelkästään tämäntyyppisten taulukkojen muokkaus-funktio.
Tämäkin koodi on todella sekava.
Aihe on jo aika vanha, joten et voi enää vastata siihen.