【问题标题】:Reading a Text file with arrays in it - to display in table读取包含数组的文本文件 - 显示在表格中
【发布时间】:2015-05-30 06:14:08
【问题描述】:

我希望有人能在这里指出正确的方向,已经在网上冲浪了几个小时,但还没有找到解决方案。

首先,我是一个“OKAY”的 php 编码员..所以这可能是 obvi 但我迷路了。

我从一个 api 事务列表中提取了一个带有 array() 的 txt 文件。

    Array
    (
        [orderid] => 00000000
        [type] => rebill
        [paystatus] => cancelled
    )

    Array
    (
        [orderid] => 000000
        [type] => rebill
        [paystatus] => cancelled
    )
Array
(
    [orderid] => 000000
    [type] => refund
    [paystatus] => cancelled
    [productid] => 939399393
    [firstName] => XXXXXX
    [lastName] => XXXX
    [customeremail] => XXXX
    [amount] => XX.XX
    [refunddate] => 2015-01-01
    [refundstatus] => ok
)

有成千上万个这样的array()...我习惯于处理 json 等来为每个拉取,但现在我完全迷失了。

我可以用

复制文件
$f = fopen("merged.txt", "r");

// Read line by line until end of file
while(!feof($f)) { 
    echo fgets($f) . "<br />";
}

fclose($f);

……就是这样

我玩过各种 foreach while 等,但无法正常工作。 如果有人能指出正确的方向,我将不胜感激。

谢谢!

【问题讨论】:

  • 您的实际问题是什么,似乎不清楚
  • 将所有数组()合并为一个。我知道 - 下面的家伙成功了:)

标签: php arrays file text


【解决方案1】:

试试这个怎么样?

$content= file_get_contents("merged.txt");

$arrays = explode('Array',ltrim(trim($content),'Array'));

echo "<table>";
foreach($arrays as $key => $value){
    $value = text_to_array("Array".$value);
    echo "<tr>";
        echo "<td>";
            echo $value['orderid'];
        echo "</td>";
    echo "</tr>";
}
echo "</table>";




function text_to_array($str) {

    //Initialize arrays
    $keys = array();
    $values = array();
    $output = array();

    //Is it an array?
    if( substr($str, 0, 5) == 'Array' ) {

        //Let's parse it (hopefully it won't clash)
        $array_contents = substr($str, 7, -2);
        $array_contents = str_replace(array(' ', '[', ']', '=>'), array('', '#!#', '#?#', ''), $array_contents);
        $array_fields = explode("#!#", $array_contents);

        //For each array-field, we need to explode on the delimiters I've set and make it look funny.
        for($i = 0; $i < count($array_fields); $i++ ) {

            //First run is glitched, so let's pass on that one.
            if( $i != 0 ) {

                $bits = explode('#?#', $array_fields[$i]);
                if( $bits[0] != '' ) $output[$bits[0]] = $bits[1];

            }
        }

        //Return the output.
        return $output;

    } else {

        //Duh, not an array.
        echo 'The given parameter is not an array.';
        return null;
    }

}

【讨论】:

  • 太棒了!!谢谢,这就是我想要的 100%。欣赏。
  • 哇。很高兴​​我帮助了交配
  • 现在只是想把它放到一个表中。我习惯于使用 JSON api 的东西......我以前没有做过的普通数组的东西。
  • 您可以通过foreach $arrays 获取值
  • like ...foreach($array as $key=>$value)
【解决方案2】:

首先为所有数组创建一个 PHP 文件。不是 TXT 文件。

然后需要对所有数组做一个更改,就是在每个变量中定义每个数组。

$var1 = Array
    (
        [orderid] => 00000000
        [type] => rebill
        [paystatus] => cancelled
    )

那么就用value by,

echo $var1['orderid'];

谢谢

【讨论】:

  • 类似... $var1 = file_get_contents(merged.php) ?
  • 没有。创建一个 php 文件,例如 arrays.php。然后通过 include_once('array.php'); 函数将该文件包含在您的列表页面中。然后您可以访问列表页面中的所有数组。要使用特定的数组,你必须给它一个像 $var1 这样的名字。现在您可以通过 $var1 访问该数组。现在你想要数组的 orderid 然后写 echo $var1['orderid'];。通过在 $var1 中传递 key,您可以访问该值。
  • 如果您对 array 基础知识有疑问,请点击此链接,w3schools.com/php/php_arrays.asp
  • 我认为你没有理解我的意思。我有一个 api 用数千个 array() 编写的文本文件 - 由于某种原因它没有像 array(array[0]() array[1]()) 那样转储 ----- 我需要显示他们在一张桌子上。我了解数组,但我不知道如何将它们全部合并到一个数组中,以便我可以获取数据并显示它。你所说的没有意义......我无法手动将 var1 var2 添加到数千个中。
猜你喜欢
  • 2013-02-22
  • 2014-10-08
  • 1970-01-01
  • 2015-01-21
  • 2015-05-20
  • 1970-01-01
  • 1970-01-01
  • 2016-10-05
  • 2015-03-19
相关资源
最近更新 更多