Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Arrayn lissäminen osaksi toista arrayta

pistemies [07.10.2011 10:36:51]

#

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.

Metabolix [14.11.2011 22:44:56]

#

Tämäkin koodi on todella sekava.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta