如何拆分 PHP 数组以便可以访问每个值

How to split up PHP array so each value can be accessed

我正在使用 PHP 读取文件:

$file = file('myfile.txt');

这会将行中的每一行作为单独的值存储在数组中。

myfile.txt

123-12333 : Example
456-45666 : MyWorld

这个结果是:

Array( [0] => 123-12333 : Example [1] => 456-45666 : MyWorld)

我需要拆分每个单独的索引值,这样我的结果最终会是这样的:

Array([0] => 123-12333 [1] => : [2] => Example [3] => 456-45666 [4] => : [5] => MyWorld)

我需要拆分数组,以便可以独立访问每个值。

array_chunk好像不行,array_slice也没有用。有什么建议吗??

我尝试过的是:

 print_r(array_chunk($fileContents,2));

结果:

Array ( [0] => Array ( [0] => 123-12333 : Duan Uys [1] => 345-34555 : Dennis Taylor ) [1] => Array ( [0] => 555-55555 : Darwin Award ) )

试试这个:

$file     = file('myfile.txt');
$splitted = array();
foreach ($file as $line) {
    $splitted = array_merge($splitted, explode(' ', $line));
}
//now $splitted will have the format you need

myfile.txt:

123-12333 : Example
456-45666 : MyWorld

PHP:

$file = 'myfile.txt';
$content = file_get_contents($file);
$lines = explode("\n", $content);
$returnArray = array();
foreach ($lines as $line) {
    $returnArray[] = explode(' ', $line);
}

print_r($returnArray);

正如您在评论中提到的,您需要第一部分。为此,更改:

$returnArray[] = explode(' ', $line);    

至:

$returnArray[] = current(explode(' ', $line));

您可以将每个部分作为字符串传递给变量,然后用“:”分隔符拆分,然后将其放入数组中,如下所示:

$output=array();
foreach ($input as $key=>$value){
    $output[$key][]=substr($value,0,strpos($value,' : '));
    $output[$key][]=substr($value,strpos($value,' : ')+3,strlen($value));
}

一些 fscanf 操作怎么样...这几乎就是它的用途:

$handle = fopen("myfile.txt", "r");
$lines = array();

while ($line = fscanf($handle, "%s : %s\n")) {
    array_merge($lines, $line);   
}

fclose($handle);

这将省略冒号,但我认为这没有用,因为你说:

I need to isolate the 123-12333, thats why i need them to be all seperated.

这与使用 file 然后循环修改内容的其他方法非常相似,但它具有逐行读取文件的额外好处,因此整个内容不会先在内存中。如果您的文件非常小,这无关紧要,但如果该文件很大或随着时间的推移会变大,则可能会发生这种情况。另外,如果您只想要号码,那么您可以这样做:

$handle = fopen("myfile.txt", "r");
$numbers = array();

while ($line = fscanf($handle, "%s : %s\n")) {
   $numbers[] = $line[0]; 
}

fclose($handle);