PHP爆炸和数组索引

kus*_*agi 19 php arrays

如何使用以下代码?

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

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

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

Bai*_*ker 33

正如其他人所说,PHP与JavaScript不同,因为它无法从函数返回访问数组元素.您列出的第二种方法有效.你也可以抓住与该阵列的第一个元素current(),reset()array_pop()像这样的功能:

$a = current( explode( 's', $str ) ); //or
$a = reset( explode( 's', $str ) ); //or
$a = array_pop ( explode( 's', $str ) );
Run Code Online (Sandbox Code Playgroud)

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

$a = substr( $str, 0, strpos( $str, 's' ) );
Run Code Online (Sandbox Code Playgroud)

任何这些选择都有效.

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

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

那不是你的风格?您总是可以编写一个小辅助函数来从返回数组的函数中获取元素:

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

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

编辑: PHP 5.4将支持阵列解除引用,因此您将能够:

$first_element = explode(',','A,B,C')[0];
Run Code Online (Sandbox Code Playgroud)