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