Autor Zpráva
nevim
Profil *
Dobry den,
Na internetu jsem nepochopil jak inicializovat dvourozmerne pole. Pobopil jsem to tak, ze nejdrive musim udelat jednorozmerne a do toho vnorit dalsi pole, ale to je blbost ne? jak udelam typicky pole jako treba v cecku?
Radek9
Profil
nevim:
Prostě stejně jako v C, pole polí. :-) Můžeš si na to napsat funkci:
function array2D($rows) {
  $arr = array();
  for ($i = 0; $i < $rows; ++$i) {
    $arr[] = array();
  }
  return $arr;
}

$my2DArray = array2D(10);
norman
Profil *
Nejspíš mysíš toto ne?

<?php

$array = array();
$array[] = 1;
$array[] = 2;
// výsledek je zapisován jako array(1,2) nebo tako jako associativní pole array(0 => 1, 1 => 2)

nebo:

$array = array();
$array[] = array(1,2);
// výsledek vypadá takto array(array(1,2)) nebo opět jako assoc array(0 => array(0=> 1, 1 => 2)) 

potřetí klíče můžeš změnit:

$array = array();
$array['klic'] = 'hodnota';
// výsledek vypadá takto array('klic' => 'hodnota')

Doufám že jsem tě moc nezmátl :) celé to totiž de zapsat třeba takto:

<?php

$array = array(
   'jedna', 'dva'
);

//ekvivalent k assoc. poli
$array = array(
   0 => 'jedna',
   1 => 'dva'
);

// vicerozmerné pole

$array = array(
   'jedna' => array('jedna', 'dva')
);

//jak to vypadá vždy můžeš zjistit pomocí fce var_dump() nebo print_r
nevim
Profil *
Radku, dekuji, jen bych se chtel jeste zeptat, jak nadefinuji, jak ma byt to pole veliky?
chapu tedy spravne

function array2D($rows) {
  $arr = array();
  for ($i = 0; $i < $rows; ++$i) {
    $arr[] = array();
  }
  return $arr;
}
 
$my2DArray = array2D(10);

ze k tomu pak pristupuju

$my2DArray[maximalne_10][jakekoliv cislo] = neco
Capu to spravne?
P.S.:V PHP sou teda divny pole, v Cecku je to lepsi :(
Radek9
Profil
nevim:
Capu to spravne?
Jo, víceméně to cápeš správně.

P.S.:V PHP sou teda divny pole, v Cecku je to lepsi :(
Nejsou to tak úplně pole (ikdyž se tak jmenují), jsou to spíš HashMapy a Listy. Takhle to je ale snad ve všech dynamicky typovaných jazycích. ;-)
Alphard
Profil
nevim:
Jak se s tím polem dál pracuje? PHP na rozdíl od C pracuje dynamicky, což přináší i jiný přístup k práci.
Obvykle není potřeba připravovat si prázdné pole o určité velikost.

PHP vytvoří nové vícerozměrné pole velice snadno, viz manuálový příklad php.net/manual/en/language.types.array.php
// Create a new multi-dimensional array
$juices["apple"]["green"] = "good"; 

Pro počáteční definici se doporučuje (nevím, jestli oficiálně) oznámit, že $juices bude pole, toť vše.

$juices = array();
$juices["apple"]["green"] = "good";
nevim
Profil *
Alpharde, moc děkuji, to je přesně to co jsem potřeboval vědět, děkuju....

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: