在数组移位不能正常返回

时间:2013-10-20 10:42:35

标签: php

当我写下面给出的代码时,运作良好

public  function Sidenews(){
        $sql = "SELECT * FROM news WHERE id <> 1 ORDER BY id ASC";
        $result_array=self::find_by_sql($sql);
        array_shift($result_array);
        return !empty($result_array) ? $result_array : false;
}

但是当我尝试编写下面给出的代码时,它无法正常工作?任何人都可以告诉我

public  function Sidenews(){
        $sql = "SELECT * FROM news WHERE id <> 1 ORDER BY id ASC";
        $result_array=self::find_by_sql($sql);
        return !empty($result_array) ? array_shift($result_array) : false;
}

在这种情况下我面临着这个错误,注意:试图获取非对象的属性。

1 个答案:

答案 0 :(得分:0)

如果你的sql返回ie。 3行,我们在上面的案例中有其他结果

案例1。

$result_array=array(
     array('colum' => 'value1'), array('column' => 'value2'), array('column'=>'value3')
);
array_shift($result_array);
//now your result array is shorter, because first row was removed
var_dump(!empty($result_array) ? $result_array : false);

输出:

array(2) {
  [0]=>
  array(1) {
    ["column"]=>
    string(6) "value2"
  }
  [1]=>
  array(1) {
    ["column"]=>
    string(6) "value3"
  }
}

说明:删除第一行,检查结果是否有更多行并返回rest(行集)

案例2。

//$result_array=self::find_by_sql($sql);
$result_array=array(
     array('colum' => 'value1'), array('column' => 'value2'), array('column'=>'value3')
);
var_dump(!empty($result_array) ? array_shift($result_array) : false);

输出:

array(1) {
  ["colum"]=>
  string(6) "value1"
}

说明:检查是否有行并返回第一行(未设置,只是单行)