Voici ma requête pour obtenir une seule colonne de t
$sql = "SELECT `id` FROM `loc8_groups`";
$query = $this->db->query($sql);
print_r($query>result());
Le résultat est comme ceci.
Array
(
[0] => stdClass Object
(
[id] => 1
)
[1] => stdClass Object
(
[id] => 2
)
[2] => stdClass Object
(
[id] => 3
)
)
Mais je veux un résultat comme un seul tableau associatif contenant tous les ids
.
Essayez ce code:
$sql = "SELECT `id` FROM `loc8_groups`";
$query = $this->db->query($sql);
$array1=$query>result_array();
$arr = array_map (function($value){
return $value['id'];
} , $array1);
print_r($arr);
utilisez mysql group_concat, pour éviter foreach ou utiliser array_map, etc.
$sql = "SELECT group_concat(id separator ',') as id FROM `loc8_groups`";
$query = $this->db->query($sql);
$array1 = $query->row_array();
$arr = explode(',',$array1['id']);
print_r($arr);
L'implémentation de base de données de CodeIgniter ne prend pas en charge les tableaux de résultats indexés, vous devez choisir entre un objet ou un tableau associatif.
Ceci est fait pour rendre vos requêtes plus faciles à gérer, car les index numériques renvoyés sont plus difficiles à déboguer et à gérer.
CodeIgniter Docs - résultats de la base de données
mais vous pouvez le faire, je suggère une fonction intégrée très utile array_column () pour vous
array_column()
renvoie les valeurs d'une seule colonne de l'entrée, identifiée par la clé column_key . Facultativement, une clé index_key peut être fournie pour indexer les valeurs du tableau renvoyé par les valeurs de la colonne index_key du tableau d'entrée.
cela convertira le tableau associatif de votre codeigniter en tableau indexé.
$sql = "SELECT `id` FROM `loc8_groups`";
$query = $this->db->query($sql);
$array = $query>result_array();
$arr = array_column($array,"id");
print_r($arr);
il produira un tableau comme ci-dessous:
Array
(
[0] => 1
[1] => 2
[2] => 3
)
Essayez ce code:
$result=$this->db->select('id')->get('loc8_groups')->result_array();
$array=array_map (function($value){
return $value['id'];
} , $result);
print_r($array);
Vous pouvez le faire comme ça:
$sql = "SELECT `id` FROM `loc8_groups`";
$query = $this->db->query($sql);
$result = array();
$index = 0;
while($row = $query->unbuffered_row('array'))
{
$result[] = $row['id'];
$index++;
}
Et le résultat serait comme ça:
array(100) {
[0]=>
string(1) "1"
[1]=>
string(1) "2"
[2]=>
string(1) "3"
...
Sans conversions supplémentaires, et je ne le vois pas du tout comme une limitation de codeigniter, tout autre framework fournissant une fonction supplémentaire à cet effet fait la même chose sous le capot. bien.