简体   繁体   中英

PHP array_search preg

I want to search for '01.' that begins with the number of the array.

Expected output:

1 => string '01.02' (length=5)
2 => string '01.03' (length=5)
3 => string '01.04' (length=5)
32 => string '02.02' (length=5)
33 => string '02.03' (length=5)
34 => string '02.04' (length=5)
35 => string '02.05' (length=5)

My code:

$key = array_search('/^01./', $tomb_datum);
echo $key;
var_dump($key);

These preg match not work.

There is a function dedicated for just this purpose, preg_grep . It will take a regular expression as first parameter, and an array as the second.

See the below example: FIDDLE

$haystack = array (
  '01.02',
  '01.03',
  '02.05',
  '02.07'
);

$matches  = preg_grep ('/^01/i', $haystack);

print_r ($matches);

If you're looking to filter the array, use array_filter:

$resultArray = array_filter($array, function($elm) {
  if (preg_match('/^01/', $elm)) {
    return true;
  } 
  return false;
});

Hope this helps.

You could use T-Regx library which allows for all sorts of array filters:

pattern('^01.')->forArray($tomb_datum)->filter()

You can also use other methods like:

  • filter() - for regular (sequential) arrays
  • filterAssoc() - for associative arrays ( filterAssoc() preserves keys)
  • filterByKeys() - to filter an array by keys, not values

PS: Notice that with T-Regx you don't need /.?/ delimiters!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM