[KLUG Members] php 4.3.10, correction

bill bill at billtron.com
Fri Jan 28 15:52:18 EST 2005


forgot a right square bracket


On Fri, 2005-01-28 at 15:45, bill wrote:
> On Fri, 2005-01-28 at 02:17, Lunitix wrote:
> > Sorry for the multiple postings.
> > 
> > 
> > Also, when the scoring is calculated the new php doesn't seem to like 
> > there not being anything passed in the $_POST[sub_score]
> > 
> > if ($_POST["add_score"]) {
> > 	//calculating scores
> > 	//print_r($_POST);
> > 	list($key,$val)=each($_POST["add_score"]);
> > 	$val=$val+$_POST["curval"];
> > 	$sqlstring = "$key=$val";
> > 	while (list($key,$val)=each($_POST[sub_score])) {  <-here
> 
> I finally read the full code and realized my mistake.  I hadn't seen
> where you marked the error.  The problem is not with an "if" statement
> but with an "each" statement.
> 
> In this case, you can't perform the line above marked "<-here" if it
> isn't an array.  That will fail in all PHP versions I've ever used.
> 
> Either you must guarantee elsewhere it will get an array or check for it
> here with 
> 
> if (is_array ($_POST[sub_score])) {

    // added right square bracket after sub_score

> 
>   while (list($key,$val)=each($_POST[sub_score])) { 
>     //do stuff  
>   }
> 
> } // end if
> 
> or 
> 
> if (count($_POST[sub_score])) {
> 
>   while (list($key,$val)=each($_POST[sub_score])) { 
>     //do stuff  
>   }
> 
> } // end if
> 
> The first one is better because the second may count the length of a
> string variable.
> 
> > Yet a $_POST[add_score] can have nothing passed to it and all seems well.
> >   if ($_POST["add_score"]) {
> 
> That's because $_POST["add_score"] is being used in an "if" statement
> (which can contain 0, null, or nothing and evaluate correctly as
> "false").  An "each" statement, however, requires an array (if it
> doesn't get an array it errors).
> 
> Hope I've fixed up any confusion I've caused.
> 
> kind regards,
> 
> bill
> 
> _______________________________________________
> Members mailing list
> Members at kalamazoolinux.org
> 
> 
> 



More information about the Members mailing list