使用explode函数读取字符串

时间:2012-02-16 18:54:55

标签: php

我的代码从文件中读取一行,将行拆分为元素,并且应该将元素放在数组中。

我使用explode,但它没有按顺序将元素放入数组中。

示例:输入

line:   1000 3000 5000

这就是发生的事情

$a=fgets($file); // $a= 1000 3000 5000
$arr= explode(" ",$a);
$u=$arr[3];    // $u=1000   
$w=$arr[6];    // $w=3000
$x=$arr[10];   // $x=5000

这是所需的顺序:

$u=$arr[0];    // $u=1000   
$w=$arr[1];    // $w=3000
$x=$arr[2];   // $x=5000

为什么explode没有将数据按顺序放入数组?

3 个答案:

答案 0 :(得分:1)

它始终按顺序排列。如果您看到此行为,那么您必须在文档中有额外的,这些PREG_SPLIT_NO_EMPTY在空数组元素中重新分解时会被爆炸。您将需要预处理字符串或修剪数组中的空元素。

或者,您可以将preg_split// using regex $arr = preg_split("/ /", $a, PREG_SPLIT_NO_EMPTY); // pruning the array $arr = explode(" ", $a); $arr = array_keys($a, ''); 设置一起使用。

您要尝试的圆顶示例:

{{1}}

答案 1 :(得分:0)

在您的示例中,它将为每个空间放置一个新的数组条目。

要获得你想要的东西,返回的字符串必须是“$ u = 1000_ $ w = 3000_ $ x = 5000”(下划线代表空格)

答案 2 :(得分:0)

另一种方法是使用array_filter删除空元素,即

$arr = explode( ' ', $a ); // split string into array
$arr = array_filter( $arr ); // remove empty elements from array
$arr = array_values( $arr ); // strip old array keys giving sequential numbering, i.e. 0,1,2