MySQL a PHP vytvoření pole hodnot

MySQL a PHP vytvoření pole hodnot
« kdy: 21. 05. 2020, 16:27:05 »
Pomoci joinu dvou tabulek dostavam vsechny group_id do kterych objekt patri

Kód: [Vybrat]
object_name | object_id | group_id
   test123     |     1        |   20 
   test123     |     1        |   30 
   test123     |     1        |   40 

V php bych potreboval pole pojmenovanych hodnot s vnorenym polem, ktere obsahuje vsechny group_id. Existuje nejaka elegantnejsi cesta nez pomoci while cyklu?
« Poslední změna: 21. 05. 2020, 19:19:44 od Petr Krčmář »


AoK

  • ***
  • 132
    • Zobrazit profil
Re:MYSQL+PHP vytvoreni pole hodnot
« Odpověď #1 kdy: 21. 05. 2020, 18:55:10 »
array_map? PHP má spousty array funkcí i s ukázkami, mrkni https://www.php.net/manual/en/ref.array.php

Není mi zatím moc jasné co chceš a proč nechceš while.

BoneFlute

  • *****
  • 1 431
    • Zobrazit profil
Re:MySQL a PHP vytvoření pole hodnot
« Odpověď #2 kdy: 22. 05. 2020, 23:53:19 »
Obvykle a nejčastěji se použvá foreach. Ale jak říká AoK, není tak docela jasné, o co se snažíš.

Re:MySQL a PHP vytvoření pole hodnot
« Odpověď #3 kdy: 23. 05. 2020, 10:33:24 »
Chtel jsem v zaveru dostat pole:

Kód: [Vybrat]
array(
object_name=test.123
object_id=1
group_id=array[20,30,40];
)

ty prvky vnoreneho pole jsem vytvarel pomoci while cyklu a array_push. Zajimalo me jestli je nejaka elegantejsi metoda.




V zaveru to tedy delam takto
Kód: [Vybrat]

// Ze vsech radku vracenych z DB, ziskat vsechny id skupin
$group_id= array_map(function($obj){ $tmpArr=array(); array_push($tmpArr,$obj['group_id']); return $tmpArr; }, $query_result);
// Z radku 0 sestavit zakladni info o objektu a pripojit group_id
$object_info=array("objectName"=> $query_result[0]['object_name'],"objectId"=> $query_result[0]['object_id'],"group_id"=>$group_id);


 


Kit

  • ****
  • 429
    • Zobrazit profil
    • E-mail
Re:MySQL a PHP vytvoření pole hodnot
« Odpověď #4 kdy: 23. 05. 2020, 10:50:50 »
Kód: [Vybrat]
$select = $pdo->prepare("SELECT object_id, object_name, group_id FROM test");
$select->execute();
$info = $select->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP);