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