2012-09-19 41 views
0

说orders.txt包含如何我不能得到数组中的每个数组元素,如果我在txt文件中读取它?

hello 
hello 
hello 

代码:

<?php 
    $orders = file("orders.txt"); 

    $row_count = count($orders); 

    for ($row = 0; $row < $row_count; $row++) { 
     $col_count = count($orders[$row]); 

     for ($col = 0; $col < $col_count; $col++) { 
      echo $orders[$row][$col]; 

     } 
    } 

?> 

我发现错误这里的原因是count($orders[$row])没有返回此数组中元素的总数。

.txt中的文本文件是多维数组吗?

如果我创建一个多维数组我可以用数()

得到多维数组中的每个阵列元素计数,但这里离txt文件即时阅读,我认为这是多维数组

我的问题:

我得到的行数,但不是列数。
我知道我可以改为strlen($orders[$row]),但为什么count($orders[$row])是不可能的。

+0

[foreach](http://php.net/foreach) –

+1

'var_dump($ orders [$ row])'看看它们究竟是什么。他们是字符串,而不是数组。 – deceze

+0

只是做一个'print_r($ orders);'它会显示数组的键和值 –

回答

-1

当我检查print_r($ orders)时,来自txt的数据不是存储在一个多维数组中,而是存储在一个普通的数组中,并带有键/ val。所以你的假设是不正确的。我很难确切地了解问题所在(语言障碍......)。你的支票数也是正确的,因为里面只有1个值(我在这里得到1)。

它可能会返回4(应该是3),因为您在txt文件中有一个额外的换行符,删除最后一个空行并且它会有意义。

+0

count对字符串不起作用;对于没有实现Countable的值,它总是返回1(除了null,当它返回0时)。 – cmbuckley

+0

我认为你错误的计数不适用于字符串。计数(“你好”)将返回1 – user1628256

+0

对不起,我太快了,我纠正了。但是我可能对换行是正确的。我在这里运行你的代码来验证。 –

0

你想达到什么目的。你的例子orders.txt太简单了,你没有指定你期望的结果。 file()返回一个字符串数组,其中每个字符串都是文件中的一行(http://php.net/manual/en/function.file.php)。

也许如果你试图从每行读取多个值(即将每行读取为一个数组),你应该使用fgetcsv()来代替(http://php.net/manual/en/function.file.php )。

+0

感谢fgetcsv() – user1628256

相关问题