我需要获取某个键的值,它们的键始终不一样。 初始部分保持不变,但每次我最终都会添加新的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。
任何人都可以帮助我如何从这个数组键中获取值。
答案 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]中。