Php 查询所有项目并忽略if条件

Php 查询所有项目并忽略if条件,php,mysql,foreach,Php,Mysql,Foreach,我目前有两个功能,对我的数据库执行查询;第一个对所有我的条目执行查询,第二个有一个规范(用于版本控制) 数据库->已编辑 代码->已编辑 为了显示我的条目,我尝试了以下操作,如预期的那样,为我提供了所有条目: $posts_array = $query->post($post); foreach ( $counted_versions as $post ) { echo $post->id . "-"; } 但是,我只想回显第2行和第4行,因为第2行是唯一的,第4行是最近的

我目前有两个功能,对我的数据库执行查询;第一个对所有我的条目执行查询,第二个有一个规范(用于版本控制)

数据库->已编辑

代码->已编辑

为了显示我的条目,我尝试了以下操作,如预期的那样,为我提供了所有条目:

$posts_array = $query->post($post);
foreach ( $counted_versions as $post )
{
    echo $post->id . "-";
}
但是,我只想回显第2行和第4行,因为第2行是唯一的,第4行是最近的

起初,我认为这个逻辑会起作用:

$posts_array = $query->post($post);
$counted_versions  = $query->version_count();

foreach ( $counted_versions as $counted )
{
    foreach ( $posts_array as $post )
    {
        echo $post->id . "-";
    }
}
相反,我得到的是
1-2-3-4-
,如果我切换foreach循环,我得到的是
4-4-4-
,而我期望的是
2-4
,或者至少是
1-4
(或者
4-2
或者
4-1


任何人都有办法得到类似的结果吗?

如果您想要每个
帖子id
的最高
id,请使用以下查询:

SELECT post_id, MAX(id) max_id
FROM news
GROUP BY post_id

什么是
post\u id
?您的表只有
id
version\u id
列。您对代码的描述与代码完全不匹配。第一个查询不会返回所有条目,它只返回id为$postid的条目。第二个循环应该只返回一行,因为
限制1
。为什么要编写嵌套循环?外部循环迭代行,内部循环迭代行中的列;但是,我仍然想知道如何循环查看每个
post\u id
,找到
id
的最高值,并确保只显示最高的
id
值。这听起来更清楚了吗?因此,通过这种方法,我现在有了新闻组中的
$query=“SELECT id,post\u id,version\u id,MAX(version\u id)MAX\u version\u id,按MAX\u version\u id DESC的post\u id顺序”
和我的foreach调用
$version->version\u id
,但我没有
version\u id
的最高值,因此,我有
1
。知道为什么吗?当您在查询中包含非聚合列时,它会从组中的随机行中获取它们,而不一定是包含
MAX(version\u id)
的行。如果要获取与max相关联的列,需要将原始表与获取max的子查询连接起来。我的foreach循环如下:
foreach($version\u数组为$version){$id=$version->id;$newest=$version->version\u id;echo$id./“$newst.
”;}
如果您想知道每个帖子ID的最大版本ID,请使用
$version->max\u version\u ID,而不是
$version->version\u ID`……我又想过头了。万分感谢!
$posts_array = $query->post($post);
$counted_versions  = $query->version_count();

foreach ( $counted_versions as $counted )
{
    foreach ( $posts_array as $post )
    {
        echo $post->id . "-";
    }
}
SELECT post_id, MAX(id) max_id
FROM news
GROUP BY post_id