2011-08-26 3 views
2

Хорошо, я озадачен.php foreach останавливается после первой итерации

У меня многоэлементный массив с 660 записями в нем. Когда я запускаю свой foreach, я должен получить по одной записи за каждый проход, но то, что я получаю, - это только первая запись. Я поднял сообщение об ошибках и ничего не получил, и я не выделяю память в foreach (просто выводя содержимое таблицы).

код выглядит следующим образом:

$totCount = count($funnel); 

echo "We found $totCount log entries<br><br>\n"; // 66x records! 
echo "<table border='1'>\n"; 
echo "<tr><th>Visitor</th><th>Date</th><th>Time/Page ---></th></tr>\n"; 
$nCount = 0; // number of records 
$nRec = 0; 
$ip = ""; // current records ip address 
$date = ""; // current records date 
$time = ""; // current records time 
$file = ""; // file that was viewed 

foreach($funnel as $page); 
{ 
    // process each record 
    $nRec++; 

    // if the ip's are different, this is a new visitor 
    if(strcmp($page['ip'], $ip) != 0) 
    { 
    if($nCount > 0) // only end a row if its not the first one 
     echo "</tr>\n"; // close out this row 

    // update the variables 
    $ip = $page['ip'];  // save the new visitors ip 
    $date = $page['date']; // save the new visitors date 
    $time = $page['time']; // save the new visitors time 
    $file = $page['path']; // save the new visitors file viewed 

    echo "<tr>\n"; // start a new row 
    echo "<td>$ip</td><td>$date</td>\n"; 
    echo "<td>$time<br>$file</td>"; 

    $nCount++;   
    } 
    else 
    { 
    // not a new visit 
    $time = $page['time']; // what time was this page viewed? 
    $file = $page['path']; // where did they go next? 
    echo "<td>$time<br>$file</td>"; 
    } 
} 
echo "</table>"; 
echo "<br>Processing Complete. $nCount visitors of $totCount/$nRec"; 

выше линия говорит, что я был 1 посетитель 66x и NREC является 1, показывающий Еогеасп выполняется 1 раз.

Любая помощь будет оценена!

+2

где вы получаете $ воронку от? – LeleDumbo

+0

Да, вам нужно убедиться, что $ funnel действительно представляет собой массив с несколькими входами. – chaoskreator

ответ

4

Полу-толстой кишки после прохода?

foreach($funnel as $page); 

Должно быть:

foreach($funnel as $page) 
+2

Да ... и я не могу поверить, что пропустил это! И я даже не нуб! LOL – ppetree

+1

Я не думаю, что это когда-либо уходит. Кажется, что второй набор глаз волшебным образом помогает. – wkm

+1

Человек, это случилось со мной так же, как 15 минут на петле И ЭТО КОММЕНТАРИЙ СДЕЛАЛ МАГАЗИНУ НЕВИДИМОЙ ПОЛУШЕННОЙ КОЛОНЫ! – Tek

1

удалить ';' после вашего заявления foreach - это в основном устраняет его.

+0

Я хотел ответить вам раньше ... ДАМН! Не могу поверить, что я пропустил эту полуточку! Я переключил цикл на a for (;;) и нашел его после первого запуска. – ppetree

0

Он выглядит так, как будто у вас многомерный массив, но вы не проходите через каждую запись.

Примеры:

<?php 
/*------------------*/ 
//Normal array - As it seems your treating it in your example 
$array = array('ip'=>$_SERVER['REMOTE_ADDR'],'date'=>'21/01/2011','time'=>time(),'path'=>'./test'); 
foreach($array as $key=>$item) 
{ 
    echo $key.'-'.$item.'<br>'; 
} 
/*------------------*/ 

/*------------------*/ 
//Multidimensional 
$array = array(
array('ip'=>$_SERVER['REMOTE_ADDR'],'date'=>'21/01/2011','time'=>time(),'path'=>'./test/1'), 
array('ip'=>$_SERVER['REMOTE_ADDR'],'date'=>'21/01/2011','time'=>time(),'path'=>'./test/2'), 
array('ip'=>$_SERVER['REMOTE_ADDR'],'date'=>'21/01/2011','time'=>time(),'path'=>'./test/3'), 
array('ip'=>$_SERVER['REMOTE_ADDR'],'date'=>'21/01/2011','time'=>time(),'path'=>'./test/4'), 
array('ip'=>$_SERVER['REMOTE_ADDR'],'date'=>'21/01/2011','time'=>time(),'path'=>'./test/5'), 
); 

foreach($array as $entry) 
{ 
    foreach($entry as $key=>$item) 
    { 
     echo $key.'-'.$item.'<br>'; 
    } 

} 
/*------------------*/ 
?> 
Смежные вопросы