This is a forwarded message From: Tom Rogers <[EMAIL PROTECTED]> To: Richard Kurth <[EMAIL PROTECTED]> Date: Saturday, March 1, 2003, 5:59:11 PM Subject: [PHP] Help!! with array's Please
===8<==============Original message text=============== Hi, Saturday, March 1, 2003, 4:28:27 PM, you wrote: RK> Hello Tom, RK> I would love to see a basic class to do all of this. I took what you RK> showed me and turned it into a function that works perfect. RK> The one thing that I have had a lot of trouble with is manipulating RK> text based data. And out of all the books I have, none of them get RK> into doing this type of programing. Here it is class groupClass { var $groups = array(); var $gid = 499; //if there are no groups, new ones start at this number +1 function groupClass($file){ $r = false; if(file_exists($file)){ $in = file($file); //build an array using names as keys so we can identify entries easier while(list($key,$val) = each($in)){ $val = trim($val); //get rid of newlines list($name,$pass,$gid,$userlist) = split (":", $val); if($gid > $this->gid){ $this->gid = $gid; //keep track of the highest gid number } $this->groups[$name]['gid'] = $gid; $this->groups[$name]['pass'] = $pass; $users = explode(',',$userlist); //get an array of users while(list($key2,$user) = each($users)){ // build an array using name as key $this->groups[$name]['users'][$user] = 1; } } $r = true; //debug //echo '<pre>'; //print_r($this->groups); //echo '</pre>'; } Return $r; } function addGroup($group,$gid = 0,$pass = 'x'){ $r = false; if(!isset($this->groups[$group])){ $gid = ($gid > 0)? $gid : $this->gid +1; // if no gid then generate the next highest $this->groups[$group]['gid'] = $gid; $this->groups[$group]['pass'] = $pass; $r = true; } Return $r; } function delGroup($group){ $r = false; if(isset($this->groups[$group])){ unset($this->groups[$group]); $r = true; } Return $r; } function addUser($group,$user){ $r = false; if(isset($this->groups[$group])){ $this->groups[$group]['users'][$user] = 1; $r = true; } Return $r; } function delUser($group,$user){ $r = false; if(isset($this->groups[$group]['users'][$user])){ unset($this->groups[$group]['users'][$user]); $r = true; } Return $r; } function dump($file){ $r = false; if($handle = fopen($file,'w')){ $groups = $this->groups; //get a copy of the groups array (saves typing :) //debug //echo '<pre>'; //print_r($this->groups); //echo '</pre>'; while(list($key,$val) = each($groups)){ //go through the groups $users = $groups[$key]['users']; //get a copy of the users array $x = 0; $userlist = ''; while(list($key2,$val2) = each($users)){ // add the users $userlist .= ($x > 0)? ','.$key2 : $key2; // don't need a comma for the first run $x++; } $gid = $groups[$key]['gid']; $pass = $groups[$key]['pass']; $list = $key.':'.$pass.':'.$gid.':'.$userlist."\n"; // make the entry fputs($handle,$list); //save it } $r = true; fclose($handle); } Return $r; } } //usage $g = new groupClass('group'); $g ->addGroup('site8'); $g ->addUser('site8','fred'); $g->delUser('site7','tester7'); $g->dump('group2'); -- regards, Tom ===8<===========End of original message text=========== -- regards, Tom mailto:[EMAIL PROTECTED] -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php