Jump to content

Strpos Method Not Working?


Recommended Posts

Hi,So i used the strpos method in my condition to see if a state begins with the letter 'c', then make the table cell red. However this doesnt work. I used the substring method to achieve the same thing and this DID work. Anyone know why?

<body><?php $state[0] = 'alabama'; $tax[0] = 4;$state[1] = 'alaska'; $tax[1] = 0;$state[2] = 'arizona'; $tax[2] = 5.6;$state[3] = 'california'; $tax[3] = 7.25;$state[4] = 'colorado'; $tax[4] = 2.9;$state[5] = 'connecticut'; $tax[5] = 6;$state[6] = 'delaware'; $tax[6] = 0;$state[7] = 'florida'; $tax[7] = 6;$state[8] = 'georgia'; $tax[8] = 4;$state[9] = 'hawaii'; $tax[9] = 4;$state[10] = 'idaho'; $tax[10] = 5;$state[11] = 'illinois'; $tax[11] = 6.25;$state[12] = 'massachusetts'; $tax[12] = 5;$state[13] = 'oklahoma'; $tax[13] = 4.5;$state[14] = 'oregon'; $tax[14] = 0;function calcTC($taxrate) {	$TC = 200.00*(1 + $taxrate/100); 	return $TC;}?><table><?phpfor($count=0; $count<count($state); $count++) {		echo ("<tr>");				if(substr($state[$count] , 0, 1) == 'c') {		//if( strpos($state[$count],'c') == '0'  ) {			echo ("<td bgcolor='red'>");		}		else {			echo ("<td>");		}		echo ($state[$count] . "</td>");		echo ("<td>".$tax[$count]."</td>");		echo ("<td>".calcTC($tax[$count])."</td>");		echo ("</tr>");}?></table></body>

Link to post
Share on other sites

strpos() returns 0 as an index of the first character (if it's a match) and false if it finds nothing. A simple test for 0 returns true for 0 AND for false. You need the equivalency operator, and to get that zero out of quote marks: if( strpos($state[$count],'c') === 0 ) // THREE

Link to post
Share on other sites
strpos() returns 0 as an index of the first character (if it's a match) and false if it finds nothing. A simple test for 0 returns true for 0 AND for false. You need the equivalency operator, and to get that zero out of quote marks: if( strpos($state[$count],'c') === 0 ) // THREE
why is there three equal signs? still confused on that.
Link to post
Share on other sites

It's a similar but different operator. The designers could have used any combination of symbols. They chose === because it's easy to remember.They are different this way. == only checks the value. === checks the vale and the data type. 0 is an integer. false is a Boolean. (And that's not just lipstick on a pig. The different types have different memory requirements.) If you compare only their values, 0 and false are the same, so 0 evaluates to false, and 0 == false returns true. But since their data types are different, 0 === false returns false.The whole point is to provide a solution to situations like this one. strpos returns 0 if it finds the needle at the first character of the haystack. So 0 means it really did find something. It's a positive result. But strpos returns false if it finds nothing. So we need a way to distinguish between false and 0. === is the tool for that.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...