PHP通知:未定义的偏移量:-1-导航上一个/下一个

时间:2020-04-09 作者:JoaMika

我使用这段代码作为导航插件的一部分,例如,对于自定义帖子类型,使用previous和next。

$pos = array_search( $post_id, $exhibs );
 if( $previous ) {
  $new_pos = $pos - 1;
  $class = \'nav-previous\';
 } else {
  $new_pos = $pos + 1;
  $class = \'nav-next\';
 }
 if( $exhibs[$new_pos] ) {

}
这很好,但我收到了一个通知PHP通知:未定义的偏移量:-1在这一行:

 if( $exhibs[$new_pos] ) {
我想这只会发生在我帖子中的第一个对象上。有没有关于如何修复此通知的想法?

1 个回复
最合适的回答,由SO网友:simongcc 整理而成

这取决于事情的数量

你想如何设计,如果这是第一篇文章,它还上过课吗?有些设计会创建循环,前一个帖子会像循环一样转到最后一个帖子,有些设计不会显示前一个按钮(如果是第一个)

$pos = array_search( $post_id, $exhibs );

 if( $previous ) {
  $new_pos = $pos - 1; // if first $pos is 0, the $new_pos is -1
  $class = \'nav-previous\';
 } else {
  $new_pos = $pos + 1;
  $class = \'nav-next\';
 }
 if( $exhibs[$new_pos] ) { // $exhibs[-1] does not exist, so undefined error occur

 }
避免错误的可能更正(这实际上取决于您想要如何设计)

if( $new_pos > 0 && $exhibs[$new_pos] ) {} 

// or 

if( isset( exhibs[$new_pos] ) {}