|
[ EmmaR @ 24.06.2011. 13:56 ] @
| primer dvodimenzionog niza
$niz=array( array(1,2,3), array(1,2,3) , array(1,2,3) , array(1,2,3) );
Pitanje je sledeće:
Pošto se višedimenzioni nizovi sastoje od više podnizova, da li je moguće da se kreiraju spajanjem odgovarajućeg broja nizova?
U ovom slučaju
$nizA=array(1,2,3,4);
$nizB=array(1,2,3);
$niz=( $nizB, $nizB, $nizB, $nizB )
dok bi konačni, dvodimenzioni niz, sadržao povezane članove iz oba niza:
$niz[n][m]=( $nizA[n] $nizB[m] ) // nadam se da je jasno šta pokušavam pošto za sada ne umem bolje. n = 0, 1,2,3 M = 0, 1,2
$niz[n]=$nizB // $niz[n]=array(1,2,3)
|
[ Br@nkoR @ 24.06.2011. 15:08 ] @
Nisam siguran da li sam dobro razumeo problem
http://php.net/array_fill_keys
[ EmmaR @ 24.06.2011. 21:40 ] @
Nije baš to, ali hvala za link. Ima interesantnih stvari.
Uspela sam da rešim. Rešenje je bilo ispred nosa a ja ga nisam videla.
Evo primera:
Code:
...
$red=range(1,10);
$vrsta=range(1,10);
$nizrv=array();
// od nizova $red i $vrsta nastaje dvodimenzionalni niz $nizrv
for($i=0;$i<sizeof($red);$i++)
{
for($j=0;$j<sizeof($vrsta);$j++)
{
$nizrv[$i][$j]=$vrsta[$j];
}
}
//stampa dvodimenzionalni niz
echo "<br/>";
for($i=0;$i<sizeof($nizrv);$i++)
{
for ($j=0;$j<sizeof($nizrv[$i]);$j++)
{
echo $nizrv[$i][$j]," ";
}
echo "<br/>";
}
...
[ Nikola Poša @ 25.06.2011. 13:18 ] @
Isti rezultat, uz malo manje linija kôda:
Code: $vrsta = range(1, 10);
$nizrv = array_fill(0, 10, $vrsta);
[ EmmaR @ 25.06.2011. 20:39 ] @
Citat: Nikola Poša: Isti rezultat, uz malo manje linija kôda:
Code: $vrsta = range(1, 10);
$nizrv = array_fill(0, 10, $vrsta);
Zatrčala sam se. Zbog jako smešnog i glupog razloga array_fill nije radilo.
Medjutim, i ne treba mi. Jer, i problem je pogrešno postavljen, na početku (na kraju stavljeno kako treba ali bez vrednosti. Kod prethodno navedenog primera to se ne primećuje.
Ovako, imam 2 niza
niza=(1,2,3) i nizb=(a,b,c) od kojih treba da dobijem nizc=( (1,a) , (2,b) , (3,c) )
To je rešeno na sledeći način:
Code:
....
$niza=array(1,2,3);
$nizb=array("a","b","c");
$nizc=array(array(1,"a") , array(2,"b"), array (3,"c") );
echo "</b>";
//formirati 2d niz
$niz_2d=array();
echo "<br> 2d niz formiranje i stampa - ocekujem. 1*a 2*b 3*c<br>";
for($i=0;$i<sizeof($niza);$i++)
{
$niz_2d[$i]=$niza[$i]."*".$nizb[$i];
echo $niz_2d[$i]." ";
}
//dvodimenzionalni niz
$niz_tmp=array_fill(0,sizeof($niz_2d),0); // bunio se ako se stavi prazan niz
$niz_3d=array();
for($i=0;$i<sizeof($niz_2d);$i++)
{
$niz_tmp =explode( "*", $niz_2d[$i] );
for($j=0;$j<sizeof($niz_tmp);$j++)
{
$niz_3d[$i][$j] = $niz_tmp[$j];
echo $niz_3d[$i][$j]." ";
}
echo "<br>";
}
....
Možda postoji jednostavniji način?
[ Br@nkoR @ 25.06.2011. 21:39 ] @
Code (php):
$niza = array(1,2,3);
$nizb = array("a","b","c");
$nizc = array_map(null, $niza, $nizb);
echo '<pre>' . print_r($nizc, true) . '</pre>';
[ EmmaR @ 27.06.2011. 11:55 ] @
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|