[thelist] functionitis

Beam sbeam at syxyz.net
Thu Apr 3 11:39:30 CST 2003


> Should I make a
> function to create these two pieces, or should I copy and paste?
>
> How do you make these kinds of decisions on whether or not to build a
> new function?
>

A rule of thumb I've heard, and often ignored, is: 2x2 - if it is more than 2 
lines or you are going to use it more than twice, make it reusable

>
> <tip author="emmajane" type="storing PHP database output">
> If you want to access the database field names in your array use an
> associative array to store rows from your database:
> 	while ($rows = mysql_fetch_array($mysql_query)) {
> 		$results[$rows["id"]]["column1"] = $rows["column1"];
> 		$results[$rows["id"]]["column2"] = $rows["column2"];
> 	}
> To access a single item (for a unique $id) use $results[$id]["column1"].
> Because this method is foreach friendly you can save yourself a lot of
> time dealing with the results. If you array_push the rows into an array of
> results you end up with both [0] and ["named"] keys in your array, which
> makes life infinitely more complicated.
> </tip>
>
> PS If anyone knows a more effecient way of doing the above, I'd love to
> know. Right now I have to set each column individually (i.e. repeat the
> $results["values"] = $rows["values] line). At least what I'm doing now is
> about 100 times more useful than having array_pushed rows.

If you are going to have a lot of results, you could eat up a lot of memory 
with this technique Doing what you need to do with the resultset inside the 
while() loop is generally the best practice.

that said, you could do:
	while ($rows = mysql_fetch_array($mysql_query)) {
 		foreach ($rows as $k=>$v) {
			if ($k == 'id') continue;
			$results[$rows["id"]][$k] = $v;
	        }
 	}



More information about the thelist mailing list