preg_grep获取索引而不是值

时间:2017-02-09 08:45:35

标签: search indexing

我有一个类似

的数组
$arr = array("arif", "arin", "asif", "armin", "arpan");

我想搜索并获取符合正则表达式的元素的索引。 在这种情况下,我想获得与我的模式匹配的索引0, 1, 3, 4

$regex = '|^ar|';

3 个答案:

答案 0 :(得分:0)

循环遍历数组中的每个项目,测试正则表达式是否匹配使用preg_match项目,如果匹配,则将索引添加到另一个索引数组。如果它不匹配,只需继续。你将留下一系列指数。

struct A {
  // ...
  int fi;
  ret_t f(base& b) { switch (this->fi) {
    case 1 : return f1(b);
    case 2 : return f2(b);
    case 3 : return f3(b);
  }
};

答案 1 :(得分:0)

在迭代输入数组时使用preg_match函数:

$arr = array("arif", "arin", "asif", "armin", "arpan");
$keys = [];
foreach ($arr as $k => $item) {
    if (preg_match('/^ar/', $item)) $keys[] = $k;
}

print_r($keys);

输出:

Array
(
    [0] => 0
    [1] => 1
    [2] => 3
    [3] => 4
)

答案 2 :(得分:0)

使用preg_grep()

<?php

$arr = array("arif", "arin", "asif", "armin", "arpan");
$regex = '|^ar|';

$res = array_keys(preg_grep($regex, $arr));
var_dump($res);