parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

я добавил возможность nameless таблиц

agat 31.03.2003 15:07 / 31.03.2003 15:22

..,мне кажется, это очень полезная фича, и я не смог от нее отказаться.
Я использовал предидущую версию класса - над новой пока не работал.
В частности, я немного изменил метод Load :
function Load($file="", $type){
	$table = array();
	$fp = fopen ($file,"r");
	
	while (!feof ($fp)) {
		$line = fgets($fp,filesize($file));
		if ($line!=""){
			$dyn = split("\t",$line);
			while (list($key,$val) = each($dyn)){
				$str[rtrim($key)] = rtrim($val);
			}
			array_push($table,$str);
		}
	}
	if(isset ($type) && $type == "nameless"){
		$result = $table;
	} else {
		$result = array();
		$columns = $table[0];
		$table = array_slice($table, 1);
		foreach ($table as $line){
			while (list($key,$val) = each($line)){
				$new_line[$columns[$key]] = "$val";
			}
			array_push($result, $new_line);
		}
	}
	return $result;
	fclose($fp);
}
Если указан ключ nameless, то мы получаем обычную индексированный массив. Если же ключ не выставлен - получим associated array, благодаря которому к полям строки можно обращаться по-человечески, по названию. И удобнее, и практичнее.

Кстати, у меня были неимоверные проблемы с завершающими пробелами. Направильно выдавались названия строк - я почти бубенил над кодом, пока нашел баг. Исправил rtrim'ом.