没有数字索引的打印数组

时间:2019-01-01 11:23:40

标签: php arrays

$sql = "select id, status, date...from arts order by date desc limit 300";
$st = $db->prepare($sql);
$st->execute();
$arr = $st->fetchAll();

print_r($arr);

Array
(
    [0] => Array
        (
            [id] => 2272
            [0] => 2272
            [status] => sky
            [1] => sky
        )

    [1] => Array ...

如何获得相同但没有数字索引的方法,像这样:

Array
(
    [0] => Array
        (
            [id] => 2272
            [status] => sky
        )

    [1] => Array ...

lorem ipsum lorem ipsum lorem ipsum lorem ipsum

4 个答案:

答案 0 :(得分:3)

无需手动执行此操作。只需让PDO知道您想要的结果即可。

更改

$arr = $st->fetchAll(); 

$arr = $st->fetchAll(PDO::FETCH_ASSOC); 

,您应该被设置。 Read more in the manual about fetch styles

答案 1 :(得分:0)

使用此函数获取非数值

foreach ($arr as $key => $value) {
    if (is_int($key)) {
        unset($arr[$key]);
    }
}

答案 2 :(得分:0)

您将必须运行2个循环并取消设置。

SELECT * FROM universities LEFT JOIN university_courses ON university_courses.university_id = universities.id LEFT JOIN courses ON courses.id = university_courses.course_id LEFT JOIN countries ON countries.id = universities.country_id WHERE FIND_IN_SET(university_courses.course_id, ?) AND FIND_IN_SET(universities.country_id, ?) GROUP BY university_courses.university_id

答案 3 :(得分:0)

我能想到的最简单的方法(Magnus方法除外)可能是array_diff_key。
我添加此答案是因为其他人以后可能需要非数据库解决方案。

创建一系列可能的数字键。
我创建了100个,进行更改以满足您的需求。

$range = range(0,100); 

foreach($arr as &$sub){
    $sub = array_diff_key($sub, $range);
}

这将循环遍历每个子数组,并过滤​​掉0-100之间的所有数字键。