如何在不使用array_pop的情况下从数组中删除最后一个元素

时间:2017-09-08 11:10:30

标签: php arrays

我有一个字符串

 $Community = "1,2,3,4,";
 $ExplodeCommunity = explode(',',$Community);//Split 
 print_r($ExplodeCommunity);

哪个给出了

  Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => ) 

现在我要删除数组中的最后一个元素。我试过 array_pop

  $RemovedLaste = array_pop($ExplodeCommunity);

  print_r($RemovedLaste);

但是什么都没有印刷。如何在不使用array_pop

的情况下从数组中删除最后一个元素

8 个答案:

答案 0 :(得分:3)

array_pop使用引用,因此它会影响原始数组...试试这个......

$x=array_pop($ExplodeCommunity);
print_r($ExplodeCommunity);
var_dump($x);

看看你得到了什么,顺便说一下你想打印空值?

答案 1 :(得分:2)

   function remove_last($Community) {

            $ExplodeCommunity = explode(',',$Community);
            $remove_empty = array_values(array_filter($ExplodeCommunity));
            $last_value_in_array =  end($remove_empty); 
            $lengh = sizeof($remove_empty) -1 ;
            unset($remove_empty[$lengh]);   
            return $remove_empty; 
    }

    $Community = "1,2,3,4,";
    print_r(remove_last($Community)); 

    Output : Array ( [0] => 1 [1] => 2 [2] => 3 )

答案 2 :(得分:1)

发现问题

当您,使用下面提供的代码时,您遇到的问题是字符串'1,2,3,4,'中的最后一个逗号explode

$Community = "1,2,3,4,";
                   //^ The value after this is an empty string ''
$ExplodeCommunity = explode(',',$Community); 

这导致$ExplodeCommunity基本上是这个,其中最后一个条目是空字符串:

$ExplodeCommunity = [1,2,3,4,''] 

这就是为什么你的Array

中有5个条目
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => ) 
                                                  ^ This is an empty string

函数array_pop返回Array中最后一个条目的值,在这种情况下是一个空字符串''

$RemovedLaste = array_pop($ExplodeCommunity);
print_r($RemovedLaste); // This prints an empty string ''

$ExplodeCommunity的值为:

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4) 

解决方案1:保持$Community值相同:

如果您在$ExplodeCommunity上执行array_pop两次,则会获得4:

$Community = "1,2,3,4,";
                   //^ The value after this is an empty string ''
$ExplodeCommunity = explode(',',$Community); 

$RemovedLaste = array_pop($ExplodeCommunity);
print_r($RemovedLaste); // This prints an empty string ''

$RemovedLaste = array_pop($ExplodeCommunity);
print_r($RemovedLaste); // This prints 4

$ExplodeCommunity的值为:

Array ( [0] => 1 [1] => 2 [2] => 3) 

解决方案2:使用rtrim删除结束逗号,

您可以使用下面的rtrim$Community字符串中删除结尾逗号:

$Community = rtrim("1,2,3,4,", ',');
$ExplodeCommunity = explode(',',$Community); 

$RemovedLaste = array_pop($ExplodeCommunity);
print_r($RemovedLaste); // This prints 4

$ExplodeCommunity的值为:

Array ( [0] => 1 [1] => 2 [2] => 3) 

其他解决方案

您可以使用其他功能,例如unset / array_slice,如其他答案中所述。

答案 3 :(得分:0)

您可以使用unset

unset($ExplodeCommunity[count($ExplodeCommunity) - 1] )

答案 4 :(得分:0)

试试这个......

if(empty($ExplodeCommunity[count($ExplodeCommunity)-1])) {
    unset($ExplodeCommunity[count($ExplodeCommunity)-1]);
}

答案 5 :(得分:0)

尝试一下:

$arr = array('hello', 'world', '2');
$arr = unset(end($arr));

这将“取消设置”数组的'end'元素。

答案 6 :(得分:0)

您也可以尝试使用array_slice

  

array_slice:返回数组数组中的元素序列   由offset和length参数指定。

$RemovedLaste = array_slice(ExplodeCommunity, 0,-1);
print_r($RemovedLaste);

答案 7 :(得分:0)

自PHP 4起,您可以像这样使用explode函数删除最后一个元素:

$Community = "1,2,3,4,";
$ExplodeCommunity = explode(',', $Community,-1);
print_r($ExplodeCommunity);

这将给您:

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4)