Portál AbcLinuxu, 12. května 2025 10:15
$array = array('aaa' => array('a' => 'a-aaa', 'b' => 'b-aaa'), 'bbb' => array('a' => 'a-bbb', 'b' => 'b-bbb'), 'ccc' => array('a' => 'a-ccc', 'b' => 'b-ccc'), 'ddd' => array('a' => 'a-ddd', 'b' => 'b-ddd'), 'eee' => array('a' => 'a-ccc', 'b' => 'b-eee'));Děkuji za pomoc
$array = $pdo->fetchAll(PDO::FETCH_ASSOC | PDO::FETCH_GROUP);Pokud to nebude vyhovovat, tak prostě volej obyčejné fetch a skládej si to pole dle libosti.
Postav dotaz tak, aby první sloupeček obsahoval klíče vnějšího pole ('aaa') a pak použij:Když použiju tvé řešení které je mimo jiné parádní$array = $pdo->fetchAll(PDO::FETCH_ASSOC | PDO::FETCH_GROUP);
$array = $pdo->fetchAll(PDO::FETCH_ASSOC | PDO::FETCH_GROUP);dostanu takové pole
array('key1' => array(0 => array('sloupec1' => 'data1', 'sloupec2' => 'data2', 'sloupec3' => 'data3', 'sloupec4' => 'data4',),), 'key2' => array(0 => array('sloupec1' => 'data1', 'sloupec2' => 'data2', 'sloupec3' => 'data3', 'sloupec4' => 'data4',),), 'key3' => array(0 => array('sloupec1' => 'data1', 'sloupec2' => 'data2', 'sloupec3' => 'data3', 'sloupec4' => 'data4',),), )Jak ale můžu získat jen tohle? Bez tohoto: "array(0 =>" a výsledek by pak byl takovej
array('key1' => array('sloupec1' => 'data1', 'sloupec2' => 'data2', 'sloupec3' => 'data3', 'sloupec4' => 'data4',), 'key2' => array('sloupec1' => 'data1', 'sloupec2' => 'data2', 'sloupec3' => 'data3', 'sloupec4' => 'data4',), 'key3' => array('sloupec1' => 'data1', 'sloupec2' => 'data2', 'sloupec3' => 'data3', 'sloupec4' => 'data4',), )Díky
$results = array_map('reset', $results);Sice to je celkem krátké, ale přináší to zbytečnou režii navíc. Otázkou je, o kolik je fetchAll s FETCH_GROUP rychlejší, než volání obyčejného fetch a vlastního skládání pole.
<php $array = array(); foreach ($pdo->query('SELECT aaa, a, b FROM Array', PDO::FETCH_ASSOC) as $row) { $aaa = $row['aaa']; $array[$aaa] = array('a' => $row['a'], 'b' => $row['b']); }Vypadá to podivně, ale kdybys byl vymyslel lepší názvy proměnných, bylo by to vypadalo lépe. Časem určitě zjistíš, že tohle nepotřebuješ a že se to dá udělat mnohem jednodušeji, když trochu změníš vstupní požadavky. Už pojmenování slovníku $array zní podivně. Podivné je i to, že chceš slovník a ne seznam. Možná by se pro tento účel mnohem lépe hodilo XML nebo INIFILE.
Podivné je i to, že chceš slovník a ne seznam.Můžeš to prosím upřesnit?
Možná by se pro tento účel mnohem lépe hodilo XML nebo INIFILE.Jako že to mám uložit místo do mysql do XML souboru?
array('key1' => array(0 => array('sloupec1' => 'data1', 'sloupec2' => 'data2', 'sloupec3' => 'data3', 'sloupec4' => 'data4',),), 'key2' => array(0 => array('sloupec1' => 'data1', 'sloupec2' => 'data2', 'sloupec3' => 'data3', 'sloupec4' => 'data4',),), 'key3' => array(0 => array('sloupec1' => 'data1', 'sloupec2' => 'data2', 'sloupec3' => 'data3', 'sloupec4' => 'data4',),), )
foreach ($array as $row) { echo $row['sloupec1']; //data1 echo $row['sloupec2']; //data2 echo ??? //key1 }
foreach ($array as $key => $row)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.