正则表达式从数组

时间:2016-08-10 13:47:47

标签: php arrays regex

我需要获取某个键的值,它们的键始终不一样。 初始部分保持不变,但每次我最终都会添加新的ID。

我的数组是这样的:

senario 1:

 Array
(
    [custom_194_1] => 123
    [_f_upload] => Save
)

senario 2:

Array
(
    [custom_194_2] => 456
    [_f_upload] => Save
)

我需要在Senario 2中获得值为123的Senario 1,456。

任何人都可以帮助我如何从这个数组键中获取值。

3 个答案:

答案 0 :(得分:0)

如果您的密钥始终是第一个元素,而数组是$array,则最快的方法是:

$result = reset($array);

或者如果你不想搞乱阵列的内部指针:

$result = array_values($array)[0];

如果您想要密钥的值:

$key = array_keys($array)[0];

答案 1 :(得分:0)

感谢您的时间。我正在使用foreach循环,然后使用子字符串检查每个键。希望它能帮助将来的人,而不是最好的解决方案。

foreach($fields as $key => $val)
    {
        if(substr($key,0,10)=='custom_194'){
            $realValue = $val;
            echo "<br>value i'm looking for:";print_r($val);    
        }
    }

答案 2 :(得分:0)

因为您声明您希望密钥末尾的数字,并且您似乎想要了解有关正则表达式的更多信息...这对于preg_match来说并不是一项艰巨的任务。

假设$ array是您开始的具有所有key =&gt; val值的数组。

foreach($fields as $key=>$val)
{
    if(preg_match('/^custom_194_([0-9]+)$/', $key, $matches))
    {
        $num = $matches[1];
        print "Key number $num has value $val\n";
    }
}

正则表达式为^custom_194_([0-9]+)$。 ^表示&#34;字符串的开头。&#34; $表示&#34;字符串的结尾。&#34;您可以看到我们明确拼写出custom_194_。然后,我们使用(和)来识别我们想要保留在matches数组中的子字符串。在(和)中,我们使用[0-9]查找字符0到9。 +表示&#34; 1个或多个字符。&#34;所以,我们想要1个或更多0到9个字符。

匹配数组包含第一个索引中匹配的整个字符串,然后是其余索引中的每个子匹配。我们只有一个子匹配,它将在索引1中。因此,$ num在$ matches [1]中。