我有下表:
columns, id , name , value
我想从pdo得到如下结果:
array = ["name1", "name2" ,"name3"]
和每个"名称"数组将保持值
所以要获得名称1的值,我会做类似的事情:
$array["name1"]["value"]
我将按名称获取值,而不是ID
我尝试用:
$sth = $this->db->prepare("SELECT name ,value FROM table");
$result = $sth->fetchAll(FETCH_ASSOC);
但是它返回了索引数组,只有id才能得到名称和值
答案 0 :(得分:2)
为此,您需要获取此类型的关联数组:
$list= array(
'name1'=>'value1',
'name2'=>'value2',
'name3'=>'value3'
)
而不是你提到的简单类型:
array = ["name1", "name2" ,"name3"]
所以你按照这个程序:
$res = $this->db->prepare("SELECT name,value FROM table");
$res->execute($params);
$fetch= $res->fetchAll(PDO::FETCH_ASSOC);
$list = array();
for ($i = 0; $i < count($fetch); $i++) {
$list[$fetch[$i]['name']] = $fetch[$i]['value'];
}
$res->closeCursor();
答案 1 :(得分:0)
您必须使用转换后的数据创建新数组:
$sth = $this->db->prepare("SELECT name, value FROM table");
$result = array_values($sth->fetchAll(FETCH_ASSOC));
$new = [];
foreach($result as $ar) {
$new[$ar['name']] = $ar['value'];
}