I'm trying to determine if a match, or ma开发者_开发问答tches exist within an array based on a pattern,
an example of the array:
Array
(
[author_id] => 1
[channel_id] => 1
[site_id] => 1
[entry_id] => 6
[url_title] => test_title_with_file2
[title] => Test Title with file
[field_id_1_directory] => 1
[field_id_4_directory] => 1
[submit] => Submit
[entry_date] => 1278219110
)
I'd like to identify that the field_id_x_directory key, or keys exist, and if they do, loop over each one and run a function that would use the 'x' as a variable.
Many thanks,
Iain.
foreach (array_keys($arr) as $k) {
if (preg_match('/^field_id_(\\d+)_directory$/', $k, $matches)) {
//do sth with $arr[$k] and $matches[1]
}
}
$input = array (
'hello'=>2,
'hello stackoverflow'=>1,
'hello world',
'foo bar bas'=>4
);
$matches = preg_grep ('/^hello$/i', array_keys($input));
echo $input[$matches[0]];
will return 2
A better alternative would be:
function preg_grep_keys( $pattern, $input, $flags = 0 )
{
$keys = preg_grep( $pattern, array_keys( \$input ), \$flags );
$vals = array();
foreach ( $keys as $key )
{
$vals[$key] = $input[$key];
}
return $vals;
}
精彩评论