获取数组中的下一个元素(PHP)

I have two models set up for an array. Basically, what I want to achieve is to get the first next entry from the database based on the order ID I have set up.

So, I send the ID 4, I find the entry with the ID 4 which has the order ID 15. Then I want to get the first next item after it, which should have the order ID 16. I tried incrementing with +1 after the order ID, but it just doesn't work.

With my current code I get the same array twice.

function first($id_domain) {
        $this->db->select ( '*' );
        $this->db->from ( 'domains' );
        $this->db->where ( 'id_domain', $id_domain);
        $result = $this->db->get ();
        return $result->result_array ();

    }

    function second ($result) {
        $this->db->select ( '*' );
        $this->db->from ( 'domains' );
        $this->db->where ( 'order', $result[0]['order'] + 1 ); //code that should get me the next entry, but doesn't work...
        $this->db->where ( 'parent', $result[0]['parent'] );
        $result2 = $this->db->get ();
        return $result2->result_array ();

    }

The problem is not due to your code, but it may be due to the records in the database: either they are non-existing for that specific condition or your matching is not entirely correct.

If you are using CodeIgniter I suggest you to alter your second function to this:

function second($result) {
    $whereConds = array(
      'order' =>  intval($result[0]['order'] + 1),
      'parent'=> $result[0]['parent']
    );
    //if you don't have firephp print/echo/var_dump as you normally would
    $this->firephp->log($whereConds);

    $query = $this->db->get_where('domains', $whereConds);

    $this->firephp->log($this->db->last_query());
    if ($query->num_rows() <= 0) {
        $this->firephp->log('No results');
        return array();
    } else {
        return $query->result_array();
    }
}

This way you can track the problem accurately.

Btw, you can also use the $offset parameter in the get_where to get the next id (perhaps just with the parent condition, since you know they are ordered sequentially):

$limit=1;
$offset=intval($result[0]['order'] + 1);//adjust depending on the parent condition below: it can be just an integer such as 2
$whereConds = array(
  'parent'=> $result[0]['parent']
);
$query = $this->db->get_where('domains', $whereConds, $limit, $offset);