【问题标题】:Text File to Array文本文件到数组
【发布时间】:2017-02-09 17:39:54
【问题描述】:

我正在尝试将我的文本文件放入一个数组中..

我的文本文件内容是这样的:

TP-Link|192.168.1.247|CHANNEL 02|warehouse
Ruckus|192.168.1.248|CHANNEL 03|entrance

任何人都可以帮助我使输出看起来像这样:

$servers = array(
    array(
        'name' => 'TP-Link',
        'ip' => '192.168.1.247',
        'channel' => 'CHANNEL 02',
        'location' => 'warehouse',
    ),  
    array(
        'name' => 'Ruckus',
        'ip' => '192.168.1.248',
        'channel' => 'CHANNEL 03',
        'location' => 'entrance',
    ),
);

提前谢谢..

这是我的代码:-

$file="config/data.txt";

$fopen = fopen($file, r);

$fread = fread($fopen,filesize($file));

fclose($fopen);

$remove = "\n";

$split = explode($remove, $fread);

$servers[] = null;
$tab = "|";

foreach ($split as $string)
{
    $row = explode($tab, $string);
    array_push($servers,$row);
}

问题是它输出一个没有数组名的多维......

我对多维数组不熟悉..

【问题讨论】:

  • 这里没有问题。请展示您对此的尝试,并提出具体问题。
  • 我已经更新了我的帖子.. 谢谢..
  • 至少告诉我们你是如何阅读文件的

标签: php arrays multidimensional-array text


【解决方案1】:

你可以这样做:-

<?php

$data = file("your text-file path"); // file() read entire file into array 

// now your array looks like below:-

$array = array('TP-Link|192.168.1.247|CHANNEL 02|warehouse',
'Ruckus|192.168.1.248|CHANNEL 03|entrance'); // comment this array line while using the code

$keys = array('name','ip','channel','location');
$final_array = array();
foreach ($array as $ar){

   $explode = explode('|',$ar);

   $final_array[] = array_combine($keys,$explode);
}

echo "<pre/>";print_r($final_array);

输出:-https://eval.in/734221

【讨论】:

    【解决方案2】:

    你可以做这样的事情。查看explodefgets

    <?php
    
    $servers_array = array();
    $handle = @fopen("inputfile.txt", "r");
    
    if ($handle) {
        while (($buffer = fgets($handle)) !== false) {
            $line = explode("|", $buffer);
            
            $servers_array[] = array(
                "name" => $line[0],
                "ip" => $line[1],
                "channel" => $line[2],
                "location" => $line[3],
            )
        }
        fclose($handle);
    }
    ?>
    

    【讨论】:

    • 对不起..我敢打赌你的答案是因为你是用我的代码做的,但我发现这个更简单..
    【解决方案3】:

    因此,如果您有一个包含以下内容的文本文件,只需使用以下代码来获取您想要的输出:

    <?php
    
    $str="TP-Link|192.168.1.247|CHANNEL 02|warehouse
    Ruckus|192.168.1.248|CHANNEL 03|entrance";
    
    echo '<pre>';
    $sections=explode("\n",$str);
    print_r($sections);
    $finalArray=array();
    foreach($sections as $line){
        $finalArray[]=explode("|",$line);
    }
    print_r($finalArray);
    
    ?>
    

    注意:$str 是您从文本文件中获取的文本

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-27
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 2014-07-29
    • 1970-01-01
    相关资源
    最近更新 更多