1

我有一个数组并检查是否end()存在或为空。如果它是空的,我想获取数组的前一个对象。我尝试使用prev(),但在应用于end().

有什么建议么?数组的长度和大小可能不同。

谢谢你们的帮助!

一些代码:

$pagination = esc_url( get_next_posts_page_link()); // returns url with slashes
$parts = explode('/', $pagination);
//get the last item
$tag = end($parts);
if ($tag == ""){echo prev($tag); } else{echo $tag;}
4

4 回答 4

2

您可以array_slice()为此使用:

$theItem = array_slice($theArray, -2, 1);
于 2012-09-30T02:05:26.757 回答
1

您不应该应用原始数组prev()的结果,end()而是应用原始数组,因为这两个函数都在操作该数组的内部数组指针。

所以:

if ($tag == ""){echo prev($parts); } else{echo $tag;}

编辑:顺便说一句,你也可以trim($pagination, '/')在你之前做一个,explode这样最后一项就永远不会为空。

于 2012-09-30T02:06:58.880 回答
0

另一种解决方案:

<?php

    $arr = array("foo", "bar", "hi", "bye");

    echo $arr[count($arr)-2];

?>

2因为count()从 开始1,而不是0

输出

你好

于 2012-09-30T02:26:53.620 回答
0

崇敬阵列并使用array_pop

$parts_reversed = array_reverse($parts, true);
$tag = array_pop($parts_reversed);
if ($tag == ""){echo array_pop($parts_reversed); } else{echo $tag;}
于 2012-09-30T03:31:13.263 回答