2012-02-13 69 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

相关问题