PHP循环函数直到找到文件

时间:2016-06-06 07:25:12

标签: php

我有以下功能:

//Check if file exists
function check_if_file_exists($row,$last_query_id){         
    $excerpt  = $row -> excerpt;
    $filename = '/' . $excerpt . '.jpg';
    if (file_exists($filename)) {
        return $row;
    } else {
        single_query_for_replacement_value($last_query_id);                                 
    }                   
};

//New query search for the replacement value in case there is no image
function single_query_for_replacement_value($last_query_id){                        
    $query    = "SELECT * FROM $table WHERE ID < '$last_query_id' order by ID desc limit 1";    
    $results  = mysql_query($query);
    $row      = $results[0]; //first and only result
    $new_id   = $row -> ID;     
    check_if_file_exists($row,$new_id);                 
};

这个想法是第一个功能检查每个&#34;摘录&#34;从查询查看文件是否存在。

如果存在,则只返回值。

如果没有,它会使用第二个函数获得另一个值。

但是,如果文件在返回之前存在,则还需要检查此新值。

您会注意到第二个函数没有return,而是再次调用第一个函数来检查文件。

这个想法是两个函数都会遍历,直到找到带文件的数据。

不会返回新值。我不确定它是否正确。

有人可以给我一个关于如何遍历函数的反馈,只有在文件存在时才会返回吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以尝试这样:

function check_if_file_exists($row,$last_query_id){         
        $excerpt  = $row -> excerpt;
        $filename = '/' . $excerpt . '.jpg';
        if (file_exists($filename)) {
            return $row;
        } else {
            $query    = "SELECT * FROM $table WHERE ID < '$last_query_id' order by ID desc limit 1";    
            $results  = mysql_query($query);
            $row      = $results[0]; //first and only result
            $new_id   = $row -> ID;
            return check_if_file_exists($row,$new_id);
        }
    };

答案 1 :(得分:0)

更改

function single_query_for_replacement_value($last_query_id){                        

function single_query_for_replacement_value($last_query_id,$offset){                        

    $query    = "SELECT * FROM $table WHERE ID < '$last_query_id' order by ID desc limit 1";    

    $query    = "SELECT * FROM $table WHERE ID < '$last_query_id' order by ID desc limit 1, " . $offset;    

    single_query_for_replacement_value($last_query_id);                                 

    single_query_for_replacement_value($last_query_id,$offset++);                                 

并从查询中删除WHERE ID < '$last_query_id'。将偏移量初始化为0。

我们的想法是使用LIMIT 1OFFSET 1一次迭代整个结果集1结果​​,直到找到您要查找的内容。