Autor Zpráva
Ald
Profil *
Ahoj, mám možná trochu netradiční problém. Mám takovéhle pole:
array("A1","B1","C1","A2","B2","C2",...,"An","Bn","Cn");
No a potřebuju ho takto vypsat:
PRVNÍ - A1, DRUHÝ - B1, TŘETÍ - C1
PRVNÍ - A2, DRUHÝ - B2, TŘETÍ - C2
.
.
.
PRVNÍ - An, DRUHÝ - Bn, TŘETÍ - Cn
Hraju si s tím celý večer a nemůžu na to přijít.
Děkuju za pomoc
Alphard
Profil
$i = 0;
foreach ($array as $item)
{
  echo $item;
  if ($i++ % 3 == 0)
  {
    echo "<br>";
  }
}
Majkl578
Profil
Pokud jsou to vždy stejně velké skupiny, postačí použít array_chunk:
$data = array("A1","B1","C1","A2","B2","C2",/*...,*/ "An","Bn","Cn");

$chunks = array_chunk($data, 3);

var_dump($chunks);
Pokud ale data pouze vypisuješ, je asi vhodnější použít Alphardovo řešení.
Ald
Profil *
No já je budu ukládat do databáze. jsou 3 sloupečky a každá hodnota z té skupiny 3 bude uložena do jednoho sloupečku. Takže na to by asi byl lepší ten foreach ne? v tom foreachu budu mít mysql_query..
Majkl578
Profil
Na to se ti asi bude hodit víc právě array_chunk. Líp se ti s tím bude pracovat, jelikož budeš mít vždy skupinu (pole) a snadno tak vytvoříš insert dotaz (vpodstatě jen implode).
foreach ($chunks as $chunk) {
    $chunk = array_map(function ($item) { return '\'' . mysql_real_escape_string($item) . '\''; }, $chunk);
    mysql_query('INSERT INTO foo (a, b, c) VALUES (' . implode(', ', $chunk) . ')');
}
Ald
Profil *
No jo, máš pravdu, už mi to funguje, moc vám děkuju za pomoc


ne tak nefunguje, já to dělám trochu jinak, udělal jsem si funkci, která mi ukládá do databáze, zadám jí pole ve tvaru array(Sloupeček=>Hodnota).
Takže použití by bylo takové že bych tu funkci volal vždycky po skupině těch tří hodnot, asi takto:
uloz(array("Sloupec1"=>"A1","Sloupec2"=>"B1","Sloupec3"=>"C1")

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: