如何拆分 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);
我正在使用 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);