Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDO将数组返回到更易访问的数组中_Php_Arrays_Multidimensional Array_Pdo - Fatal编程技术网

Php PDO将数组返回到更易访问的数组中

Php PDO将数组返回到更易访问的数组中,php,arrays,multidimensional-array,pdo,Php,Arrays,Multidimensional Array,Pdo,信息 这应该是一个相当简单的问题。在我的网站上,我的数据库中有一个post_分类,其结构如下 ID | Name 1 | Sports 2 | Health 3 | Movies 4 | Music 现在,当我保存一篇博客文章时,我会在博客文章表中保存类别id,例如电影的1 在向我的用户打印博客文章时,我希望能够通过类似$categoris[$blog\u cat\u id']['name']

信息

这应该是一个相当简单的问题。在我的网站上,我的数据库中有一个post_分类,其结构如下

    ID    |    Name
    1     |   Sports
    2     |   Health
    3     |   Movies
    4     |   Music
现在,当我保存一篇博客文章时,我会在博客文章表中保存类别id,例如电影的
1

在向我的用户打印博客文章时,我希望能够通过类似
$categoris[$blog\u cat\u id']['name']

下面是我如何获取上面使用的
$categoris
的所有类别

function getCategorysArray(){
    $STH = $this->database->prepare('SELECT * FROM project_categorys');
    $STH->execute();
    return $STH->fetchAll();
}
但这将以这种格式返回数组

Array
(
[0] => Array
    (
        [id] => 1
        [0] => 1
        [name] => Sports
        [1] => Sports
    )

[1] => Array
    (
        [id] => 2
        [0] => 2
        [name] => Health
        [1] => Health
    )

[2] => Array
    (
        [id] => 3
        [0] => 3
        [name] => Movies
        [1] => Movies
    )

[3] => Array
    (
        [id] => 4
        [0] => 4
        [name] => Music
        [1] => Music
    )
因此,我无法使用所需的方法获取类别名称(
$categorys[$blog\u cat\u id']['name']

问题

是否有一种方法可以以某种方式重新映射数组,以便将
$array[1]['name']
=
Sports
作为输出

试试这个:

function getCategorysArray(){
    $STH = $this->database->prepare('SELECT * FROM project_categorys');
    $STH->execute();
    $res = $STH->fetchAll(PDO::FETCH_ASSOC);
    $categories = array();
    foreach($res as $row){
        $categories[$row['id']] = $row;
    }
    return $categories;
}
试试这个:

function getCategorysArray(){
    $STH = $this->database->prepare('SELECT * FROM project_categorys');
    $STH->execute();
    $res = $STH->fetchAll(PDO::FETCH_ASSOC);
    $categories = array();
    foreach($res as $row){
        $categories[$row['id']] = $row;
    }
    return $categories;
}

因此,基本上,您希望数组由
id
的值索引

首先,可以通过调用
fetchAll(PDO::FETCH\u ASSOC)
来简化数组。这意味着您将不再在返回的数组中有那些不必要的
0
1
索引

$STH = $this->database->prepare('SELECT * FROM project_categorys');
$STH->execute();
$results = $STH->fetchAll(PDO::FETCH_ASSOC);
$ret = array();
foreach ($results as $row) {
    $ret[$row['id']] = $row['name'];
}
return $ret;
那么最简单的解决方案就是在返回的数组上循环

$STH = $this->database->prepare('SELECT * FROM project_categorys');
$STH->execute();
$results = $STH->fetchAll(PDO::FETCH_ASSOC);
$ret = array();
foreach ($results as $row) {
    $ret[$row['id']] = $row['name'];
}
return $ret;
也许更好的是,我们可以删除
fetchAll
调用,因为
PDOStatement
可遍历的

$STH = $this->database->prepare('SELECT * FROM project_categorys');
$STH->execute();

$ret = array();
foreach ($STH as $row) {
    $ret[$row['id']] = $row['name'];
}
return $ret;

因此,基本上,您希望数组由
id
的值索引

首先,可以通过调用
fetchAll(PDO::FETCH\u ASSOC)
来简化数组。这意味着您将不再在返回的数组中有那些不必要的
0
1
索引

$STH = $this->database->prepare('SELECT * FROM project_categorys');
$STH->execute();
$results = $STH->fetchAll(PDO::FETCH_ASSOC);
$ret = array();
foreach ($results as $row) {
    $ret[$row['id']] = $row['name'];
}
return $ret;
那么最简单的解决方案就是在返回的数组上循环

$STH = $this->database->prepare('SELECT * FROM project_categorys');
$STH->execute();
$results = $STH->fetchAll(PDO::FETCH_ASSOC);
$ret = array();
foreach ($results as $row) {
    $ret[$row['id']] = $row['name'];
}
return $ret;
也许更好的是,我们可以删除
fetchAll
调用,因为
PDOStatement
可遍历的

$STH = $this->database->prepare('SELECT * FROM project_categorys');
$STH->execute();

$ret = array();
foreach ($STH as $row) {
    $ret[$row['id']] = $row['name'];
}
return $ret;

很好用,谢谢。最后一个问题,您所说的可遍历的
是什么意思?@Harry它的意思是
PDOStatement
实现。这意味着您可以在其上运行
foreach
。非常有效,谢谢。最后一个问题,您所说的可遍历的
是什么意思?@Harry它的意思是
PDOStatement
实现。这意味着您可以在其上运行
foreach