获取数组中除最后一个元素外的所有值

26
我现在有这个:
$s = preg_split('/\s+/', $q);
    $k = end($s);

现在我想要的是获取数组$k[]中除最后一个元素外的所有值,并将它们连接成一个新的字符串。所以,如果这个数组是:

0 => Hello
1 => World
2 => text

我想要得到 Hello World

4个回答

59

使用array_sliceimplode函数:

$k = array( "Hello", "World", "text" );
$sliced = array_slice($k, 0, -1); // array ( "Hello", "World" )
$string = implode(" ", $sliced);  // "Hello World";

2
把这个代码转化为单行代码,我必须说它非常高效!implode("/", array_slice(explode("/", $serverUrl), 0, -1)); - Eric Herlitz
1
@EricHerlitz 不需要使用 array_sliceexplode 有第三个参数,使得 array_slice 可以被弃用。implode(' ', explode(' ', 'Hello World text', -1)); // "Hello World" - SeaWorld
@SeaWorld 这其实是同一种东西。implode(" ", array_slice(array( "Hello", "World", "text" ), 0, -1)); 不过,如果你有一个字符串作为起点,使用 explode 更合理。 - Eric Herlitz

7
如果您可以修改数组:
array_pop($k);
$string = join(' ', $k);

array_pop() 函数可以弹出并返回数组的最后一个值,同时将数组长度缩短一个元素。如果数组为空(或不是数组),则返回 NULL。

来源


1
我更喜欢使用array_pop而不是array_slice,因为后者对于这种特定情况来说太过笼统。 - Stanislav Shabalin

2

使用 array_slice($array) 函数可以获取任何数组的子集。

对于不包含最后一项的所有内容,我认为应该是

$return = array_slice($array, 0, count($array)-1, true);

测试用例 http://codepad.org/fyHHX5Us


1

类似这样:

<?php

    $array = array('Hello', 'World', 'text');
    $new_array = array_slice($array,0,-1);
    echo implode(' ',$new_array);

?>

示例


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接