获取前一个对象到数组的end()

时间:2012-09-30 02:03:15

标签: php

我有一个数组并检查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 个答案:

答案 0 :(得分:2)

您可以使用array_slice()

$theItem = array_slice($theArray, -2, 1);

答案 1 :(得分:1)

您不应对prev()的结果应用end(),而应对原始数组应用if ($tag == ""){echo prev($parts); } else{echo $tag;} ,因为两个函数都在操作该数组的内部数组指针。

所以:

trim($pagination, '/')

修改:顺便说一句,您还可以在explode之前执行{{1}},以便最后一项永远不会为空。

答案 2 :(得分:0)

另一种解决方案:

<?php

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

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

?>

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

<强>输出

答案 3 :(得分:0)

重组数组并使用array_pop

$parts_reversed = array_reverse($parts, true);
$tag = array_pop($parts_reversed);
if ($tag == ""){echo array_pop($parts_reversed); } else{echo $tag;}