web-dev-qa-db-fra.com

Codeigniter: obtenir toutes les valeurs d'une seule colonne sous forme de tableau

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.

7
iam batman

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);
15
Lakremon

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);
3
Golduno Support

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

)
2
Haritsinh Gohil

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);
1
Mahdi Bagheri

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.

0
Sherif Salah