|
Posted by Ewoud Dronkert on 05/21/05 12:02
On Fri, 20 May 2005 22:21:34 -0400, JackM wrote:
> while ($line = fgets($fd, 4096)) {
> $arrayData = explode("-", trim($line));
> }
What might be conceptually simpler is
function nonzero($line) {
$a = explode('-', trim($line));
return strcmp('00', $a[2]);
}
$rawdata = file('myfile.ext'); //read into array by lines
$filtered = array_filter($rawdata, 'nonzero');
but it may lead to doing things twice if you need the exploded line
again later. If you only explode() to check for '00', this is probably
fine. If you do need to process each line in its exploded form, you
might want to explode first, then filter:
function expline($line) {
return explode('-', trim($line));
}
function nonzero($arr) {
return strcmp('00', $arr[2]);
}
$rawdata = file('myfile.ext');
$expdata = array_map('expline', $rawdata);
$filtered = array_filter($expdata, 'nonzero');
Then process the elements of $filtered (each element is now an array),
maybe with array_map() again. Nice if you like functional programming.
Shortest imperative version:
$rawdata = file('myfile.ext');
foreach ($rawdata as $line) {
$arr = explode('-', trim($line));
if (strcmp('00', $arr[2])) { //skip if arr[2] is 00
//do stuff with $arr[0], $arr[1], etc.
}
}
--
Firefox Web Browser - Rediscover the web - http://getffox.com/
Thunderbird E-mail and Newsgroups - http://gettbird.com/
[Back to original message]
|