RE: Calling functions recursively: recursive PHP functions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks John. Your comment helped me through. I used a static variable
for the array, array_merge_recursive() function to accumulate the
foreign keys and $this->kgforeignkeys as a recursive function in a loop.
This all works ok!

	function kgforeignkeys($tablename = "" ) 
		{
		static $totalkgArr;
		if ( $this->connection && $tablename != "" ) 
			{
			$keylist = "";
			$sql = "SELECT conname,
  pg_catalog.pg_get_constraintdef(oid) as condef 
						FROM pg_catalog.pg_constraint r
						WHERE r.conrelid = (SELECT c.oid
							FROM pg_catalog.pg_class c
						    LEFT JOIN pg_catalog.pg_namespace n 
							ON n.oid = c.relnamespace
							WHERE pg_catalog.pg_table_is_visible(c.oid)
      							AND c.relname ~ '^" . $tablename . "$' )
						AND r.contype = 'f'";

			$keylist = pg_query ($this->connection, $sql);
			$num_rows = pg_num_rows($keylist);
			for ($i=0; $i < $num_rows; $i++) 
				{
				$r = pg_fetch_row($keylist);
//				echo "Field: $r[0], $r[1] </br>";
				$phrase = split("\(|\)", $r[1]);
//				echo "Phrase: $phrase[0], $phrase[1], $phrase[2], $phrase[3],
$phrase[4] </br>";
				$kgArr[$i][0][0] = $tablename;
				$word1 = split(",", $phrase[1]);
				for ($j=1; $j <= count($word1); $j++)
					{
					$kgArr[$i][0][$j] = trim($word1[$j - 1]);
					}
				$kgArr[$i][1][0] = trim(Substr($phrase[2], strrpos($phrase[2], "
")));
				$word2 = split(",", $phrase[3]);
				for ($j=1; $j <= count($word2); $j++)
					{
					$kgArr[$i][1][$j] = trim($word2[$j - 1]);
					}
				}
			pg_free_result ($keylist);
			$totalkgArr = array_merge_recursive($totalkgArr, $kgArr );
			for ($h=0; $h < $num_rows; $h++) 
				{
				$totalkgArr = $this->kgforeignkeys( $kgArr[$h][1][0] );
				}
			return $totalkgArr;
			}
		else 
			{
			echo 'Failed to obtain the foreign keys in ' . $tablename . '<br />';
			return $totalkgArr;
			}
		}


On Mon, 2003-01-27 at 19:57, John W. Holmes wrote:
> [snip]
> > <?php
> > function Test()
> > {
> >     static $count = 0;
> > 
> >     $count++;
> >     echo $count;
> >     if ($count < 10) {
> >         Test ();
> >     }
> >     $count--;
> > }
> > ?>
> >
> ************************************************************************
> **
> > *
> > Interesting but I am still lost as I need some help with
> > methods/functions within objects:
> > In the above example do I need to access Test() by:
> > 
> >     if ($count < 10) {
> >         this->Test ();
> 
> Yes, without the space: $this->Test();
> 
> ---John W. Holmes...
> 
> PHP Architect - A monthly magazine for PHP Professionals. Get your copy
> today. http://www.phparch.com/
> 
> 
> 



-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux