我的代码从文件中读取一行,将行拆分为元素,并且应该将元素放在数组中。
我使用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
没有将数据按顺序放入数组?
答案 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