PHP - while循环结束后运行函数

时间:2014-07-07 04:37:04

标签: php codeigniter session while-loop

这可能不是我问题的最佳解决方案,但无论如何我都有兴趣知道。

是否可以将一个函数或一段代码推迟到while循环结束之后?如果把它放在下面,我认为无论如何都会发生这种情况,但事实似乎并非如此。

我想要完成的是在while循环中保存一些会话数据(如果它不存在,这是条件)。当循环最终结束时,由于会话数据已设置,因此可以执行依赖于会话数据的代码。

这是在CodeIgniter 3.0系统中,所以它使用会话驱动程序:

// Uses a helper function session_isset (see below) to check if the session data is set, and if at least one of the supplied data variables is null then try to set it

while(!session_isset(array('instance_id','instance_prefix'))) {
    $this->session->set_userdata('instance_id', $instance->instance_id);
    $this->session->set_userdata('instance_prefix', $instance->instance_prefix);
}

// The get_managers() function, which ultimately calls a model function, relies on the set session data to get a table prefix which is prepended to all relevant database queries
// This should ideally only be allowed to run once the session data has been confirmed as set

if($manager = $this->manager->get_managers(array($manager_id))[0]) {
    $manager->instance_id = $instance->instance_id;
    $manager->instance_prefix = $instance->instance_prefix;
    echo json_encode($manager);
}

function session_isset($data) {
    $ci =& get_instance();
    foreach ($data as $value) {
        if(is_null($ci->session->userdata($value))) return FALSE;
    }
    return TRUE;
}

所以重申一下,有没有办法推迟代码直到while循环结束,类似于回调?

另外,在运行依赖它的函数之前,是否有更好的方法可以确保会话数据的设置?

0 个答案:

没有答案