PHP 爆炸和数组索引

2022-08-30 19:54:20

如何使以下代码正常工作?

$a = explode('s', $str)[0];

我只看到这样的解决方案:

$a = explode('s', $str);$a=$a[0];


答案 1

正如其他人所说,PHP与JavaScript不同,因为它不能从函数返回中访问数组元素。您列出的第二种方法有效。您还可以使用 、 或 函数获取数组的第一个元素,如下所示:current()reset()array_pop()

$a = current( explode( 's', $str ) ); //or
$a = reset( explode( 's', $str ) ); //or
$a = array_pop ( explode( 's', $str ) );

如果要消除由于多次分离而可能导致的轻微开销,可以通过在其他参数之后传递两个参数来将其限制设置为 2。您也可以考虑使用str_pos和strstr代替:

$a = substr( $str, 0, strpos( $str, 's' ) );

这些选择中的任何一个都可以工作。

编辑另一种方法是使用(参见PHP文档)。有了它,你可以抓住任何元素:list()

list( $first ) = explode( 's', $str ); //First
list( ,$second ) = explode( 's', $str ); //Second
list( ,,$third ) = explode( 's', $str ); //Third
//etc.

那不是你的风格?您始终可以编写一个较小的帮助程序函数,以从返回数组的函数中获取元素:

function array_grab( $arr, $key ) { return( $arr[$key] ); }

$part = array_grab( explode( 's', $str ), 0 ); //Usage: 1st element, etc.

编辑:PHP 5.4 将支持数组取消引用,因此您将能够执行以下操作:

$first_element = explode(',','A,B,C')[0];

答案 2

您的第二个代码块是正确的。,而其他函数无法返回完全形成的数组以供立即使用,因此您必须设置一个临时变量。开发树中可能有代码可以做到这一点,但获取您现在需要的元素的唯一方法是临时变量。explode