2012-09-19 55 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

相關問題