2012-02-13 72 views
1

我有被保存爲爲鍵和值創建具有值[1]新的數組[2]值

{time} | {name} | {value1} 
{time} | {name} | {value2} 
{time} | {name2} | {value3} 
{time} | {name3} | {value4} 

的{TIME}日誌文件是在「自Unix紀元秒」的時間戳

和日誌文件被寫入一行一行所以最新的日誌行是在底部,

,我試圖將值歸類到一個PHP數組....

可以說,我們有

{time} | Steve | Pizza 
{time} | Steve | Kebab 
{time} | Steve | Burger 
{time} | John | Kebab 
{time} | John | Ice-Cream 
{time} | Dave | Pizza 
{time} | Derek | Ice-Cream 
{time} | Derek | Fanta 

我已迅速發展成數組$線

這是我可以用它來獲取變量....

echo $lines[0][1] . "," . $lines[0][2]; // this will print ' Steve,Pizza ' 
echo $lines[3][2]; // this will print ' Kebab ' 

我試圖用某種方式編寫一個陣'$線[$ X] [1] '作爲數組鍵和' $線[$ X] [2]'作爲數組的值,所以我可以撥打:

print_r($new_array); 

得到:

array 
    (
    [Steve] => Pizza 
      => Kebab 
      => Burger 
    ) 
    (
    [John] => Kebab 
     => Ice-Cream 
    ) 
    (
    [Dave] => Pizza 
    ) 
    (
    [Derek] => Ice-Cream 
      => Fanta 
    ) 

這樣做的原因是我需要顯示一個小桌子,這將是這樣的....

_________________________________________ 
|  Steve  |  Pizza   | 
|     |  Kebab   | 
|___________________|_____ Burger ________| 
|  John  |  Kebab   | 
|___________________|_____ Ice-Cream _____| 
|______ Dave _______|_____ Pizza _________| 
|  Derek  |  Ice-Cream  | 
|___________________|_____ Fanta _________| 

數組$線已經格式化刪除所有「日誌行」年長超過24小時....

所以我不認爲我會需要限制陣列鍵{}名稱

在此先感謝您的任何建議量....已經嘗試了所有這一切邏輯的解決方案:咆哮:

回答

2

沒有完全測試,但嘗試:

$new = array(); 
foreach($lines as $line) 
{ 
    $new[$line[1]][] = $line[2]; 
} 
print_r($new); 

編輯由DJ-皮條客..

$new = array(); 
foreach($lines as $line) 
{ 
$new[$line[1]][] = $line[2]; 
} 
// print_r($new); 


foreach($new as $key => $news) { 

echo $key . "<br>"; 

foreach($news as $k => $v) { 

echo $news[$k] . "<br>"; 

} 
} 

這確實exacly我的問題是問....榮譽,爲最初的想法@亞倫:)

+0

確定這工作完美,但我不能得到正確的語法打印/回聲{name1}和{值} ......是$ new [$ line] [0]的名稱和$ new [$ line] [1]值? – 2012-02-13 20:08:51

+0

即時通訊現在認爲它可能是另一個新的$新....這樣我可以列出$ name [$ x]和$ value [$ x] [1] .....和$ name [$ y]和$ value [$ y] [1]? – 2012-02-13 20:14:41

+0

確定即時消息在那裏,我有foreach($新爲$ key => $ news){ echo $ key。 「
」; print_r($ news); echo「
」; } .....這顯示我的工作如預期.....現在我寫新的foreach嵌套顯示每個值也感謝 – 2012-02-13 20:29:51

0

不同變化增加值共享子陣列相同的密鑰:

$result = array(); 
for ($lines as $line) { 
    if (!isset($result[$line[1]])) { 
     $result[$line[1]] = array(); 
    } 
    $result[$line[1]][] = $line[2]; 
} 
+0

這給了我代碼錯誤,並不加載任何東西? – 2012-02-13 20:11:15

+0

缺少方括號...修正它。 – Feysal 2012-02-13 20:41:08

+0

非常感謝,但第一個答案已經完成,因爲我問,只是等待我的代碼編輯爲管理員批准:)對不起 – 2012-02-13 20:42:11

相關問題