php - How to place strings into an array through a search and then output it? -
$states = "mississippi alabama texas massachusetts kansas"; $statesa = explode(' ',$states); $statesarray = array(); foreach($statesa $state) { if(preg_match( '/xas$/', trim($state))) $statesarray[0] = trim($state); } foreach($statesa $state) { if(preg_match('/^k.*s$/i', trim($state))) $statesarray[1] = trim($state); } foreach($statesa $state) { if(preg_match('/^m.*s$/', trim($state))) $statesarray[2] = trim($state); } foreach($statesa $state) { if(preg_match('/a$/', trim($state))) $statesarray[3] = trim($state); } foreach($statesa $state) { #problem here if(preg_match('/^m/', trim($state))) $statesarray[4] = trim($state); } foreach ( $statesarray $element => $value ) print( "element $element of array $value <br />");
the task output word begins letter m in variable state. have "mississippi alabama texas massachusetts kansas"
in $states
. when try print out, massachusetts
gets printed out rather mississippi
. why that?
<? foreach($statesa $state) { #problem here if(preg_match('/^m/', trim($state))) $statesarray[4] = trim($state); } ?>
in code above, both massachusetts , mississippi match expression, , both stored in $statesarray[4]
. if want first match, maybe should check if $statesarray[4]
set. so, should work:
<? foreach($statesa $state) { #problem here if(preg_match('/^m/', trim($state)) && !isset($statesarray[4])) $statesarray[4] = trim($state); } ?>
this fill $statesarray[4]
if not set.
let me know if works you.
Comments
Post a Comment