и снова разбор csv

Ринат

Новичок
и снова разбор csv

добрый день
есть код попытки разбора csv
PHP:
<?
$handle = fopen("sp.csv", "r");
$data = array();
$array_value = array();
$k = 0;
while (!feof($handle)){
		$data[$k] = fgetcsv($handle, 1000, "\n");
			foreach ($data[$k] as $key=>$value){
				$array_value = explode(";", $value, 7);
				print ($array_value[1]."<br>");
			}
		$k++;
}


var_dump ($data);
fclose($handle);

?>
получаю при исплднение соообщение сл вида
Name
new
new2
new2
Warning: Invalid argument supplied for foreach() in d:\daten\projekte\php\usa\sp\les.php on line 9
смысл в принципе ясен
дамп массива дал следующие результаты
array(5) { [0]=> array(1) { [0]=> string(35) "SP id;Name;Land;Opis;Price;War;Zeit" } [1]=> array(1) { [0]=> string(48) "19786;new;ET;new;1200;EUR;July 26, 2005, 09 : 45" } [2]=> array(1) { [0]=> string(49) "9700;new2;ET;new1;1200;USD;July 26, 2005, 10 : 11" } [3]=> array(1) { [0]=> string(50) "18661;new2;ET;new1;1200;USD;July 26, 2005, 10 : 11" } [4]=> bool(false) }

то есть как я понгял, спотыкаетяс на посл, элементе, как этого избежать
и еще, первая строка в csv - заголовок, он не нужен, нужны сами данные без заголовка

спасибо всем
 

Ринат

Новичок
спасибо огромное, сделал все, что просил
спасибо за ссылку, очень полезно.
получилось так:
получаю желаемый результат, со стороны может видны скрытые косяки
заранее благодарен
PHP:
<?
$handle = fopen("sp.csv", "r");
$data = array();
$array_value = array();
$k=0;
$n=0;
while (!feof($handle)){
	$data[$k] = fgetcsv($handle, 1000, "\n");
		if (is_array($data[$k])) { 
			if ($n !=0) {	
				foreach ($data[$k] as $key=>$value){
					$array_value = explode (";", $value);
					print $array_value[0]."<br>";
				}
				$k++;
			}
			else {$n=1;}		
		}
		
}
fclose($handle);

?>
 

SelenIT

IT-лунатик :)
Ринат
в чем смысл использования fgetcsv для получения массива из единственного элемента (по определению), чтобы потом разбирать этот элемент эксплодом? Не достаточно ли этого?
PHP:
for ($k=0; !feof($handle); $k++) {
    $data[$k] = fgetcsv($handle, 1000, ";");
    if ($k>0) {
         print $data[$k][0]."<br>";
    }
}
 

Ринат

Новичок
SelenIT
спасибо! Ваш код просто замечателен, короткий и функциональный , спасибо за помощь, просто клинуло, показалось, что мне надо вытащить все строки, а дело все равно в цикле
убеждаюсь, что лучше сначала подумать поболье как задание сделать...а потом браться
эх..век живи, век учись
спасибо!
 
Сверху