PHP – list()

A lista titka.

Hadd mutassak be néhány trükköt a PHP egy régi, de annál hasznosabb nyelvi elemével, aminek a neve: list(). Valószínűleg sokan vannak, akik még hallomásból sem ismerik ezt a szerkezetet, így az ő kedvükért kezdjük a legelején.

A mindig az értékadások bal oldalán álló list() konstrukcióval tömböket bonthatunk szét, és a tömbelemek értékeit külön-külön változókban helyezhetjük el. Nézzünk egy egyszerű példát:

/* Inicializáljuk a tömböt */
$arr = array('A', 'B', 'C', 'D');
   
/* a list() segítségével értéket adunk néhány változónak */
list($egy, $ketto, $harom, $negy) = $arr;

/* A változók tartalma a list() után:
 *  $egy == 'A'
 *  $ketto == 'B'
 *  $harom == 'C'
 *  $negy == 'D'
 */

Ez magában sem egy haszontalan dolog, de nézzük meg, hogyan csavarhatunk egyet-kettőt a dolgon!

Először: ha csak néhány tömbelemet kívánunk változókhoz rendelni, akkor hasznunkra válhat a list() azon tulajdonsága, hogy a felsorolásában kihagyhatunk elemeket az alábbi módon:

$arr = array('A', 'B', 'C', 'D');
/* a trükk */
list($egy, $ketto, , $negy) = $arr;
/* vagy akár: */
list (, , , $negy) = $arr;

Másodszor: A list()-tel használható a [] tömb-operátor, aminek a segítségével új elemeket adhatunk a tömbökhöz. Lássuk, hogyan:

/* Az eredeti tömb */
$arr = array(
    array('A', 'B', 'C', 'D'),
    array('E', 'F', 'G', 'H'),
    array('I', 'J', 'K', 'L'),
    array('M', 'N', 'O', 'P'),
    array('Q', 'R', 'S', 'T')
);

/* Négy üres tömböt hozunk létre */
$egy = $ketto = $harom = $negy = array();

/* Végiglépkedünk $arr-on és list()-tel kitöltjük az új tömböket */
foreach($arr as $row)
{
    list($egy[], $ketto[], $harom[], $negy[]) = $row;
}

/* A tömbök elemei a list() után:
 * $egy => 'A', 'E', 'I', 'M', 'Q'
 * $ketto => 'B', 'F', 'J', 'N', 'R'
 * $harom => 'C', 'G', 'K', 'O', 'S'
 * $negy => 'D', 'H', 'L', 'P', 'T'
 */

Remélem hasznotokra tudtam lenni ezzel a bejegyzéssel - további jó programozást és kockulást mindenkinek!

További információ a list()-ről a PHP Kézikönyvben található.

Hozzáfűznél valamit?

Dobj egy emailt a blog kukac deadlime pont hu címre.

Feliratkoznál?

Az RSS feed-et ajánljuk, ha kedveled a régi jó dolgokat.