"valid", "number13"=>"valid" ); and I nee...">

Search for array keys with a pattern

Let's say I have the following array:

$arr = array( "number2"=>"valid", "number13"=>"valid" ); 

and I need to find if the key exists with number* .

For $arr this will be true. For the following array:

 $arr2 = array( "key"=>"foo", "key2"=>"foo2" ); 

this will return false.

+4
source share
3 answers

This means that the number should be followed by the actual number (edit: or nothing at all), if necessary, adjust the regular expression. For example, everything starting with "number", you can use /^number/ .

 if(count(preg_grep('/^number[\d]*/', array_keys($arr))) > 0) { return true; } else { return false; } 
+5
source

Use regex.

 foreach ($arr as $key => $value) { // NOTE: check for the right format of the regular expression if (preg_match("/^number([0-9]*)$", $key)) { echo "A match was found."; } else { echo "A match was not found."; } } 
+2
source

Here is a simple function that will do what you want:

 function preg_grep_key($pattern, $input) { return preg_grep($pattern, array_keys($input)); } // ----- Usage ----- $arr = array( "number2"=>"valid", "number13"=>"valid" ); if (count(preg_grep_key('/^number/', $arr)) === 0) { // Nope } else { // Yep } 
0
source

Source: https://habr.com/ru/post/1487122/


All Articles