我有一个包含一些数组的数组($ configOptions)。该数组中的每个数组($ option)都具有以下结构:
array
'manufacturer1_sender' => string 'general' (length=7)
'manufacturer1_mail' => string 'acer@example.com' (length=16)
'manufacturer1_template' => string
'orderhandling_options_manufacturer1' (length=58)
'manufacturer1_name' => string 'Acer' (length=4)
唯一改变的是 manufacturer1_name 中的数字。数量可以是2,3,4等等。现在我有了这段代码:
foreach($configOptions as $option) {
$name = ??????????;
}
$ option是我上面转储的数组,如何在foreach中访问manufacturerN_name?
谢谢!
答案 0 :(得分:2)
有几种方法:
1 - 检索子数组中的所有键并根据正则表达式检查每个键,将结果捕获到数组中,然后将其用作索引:
$keys=array_keys($option); //Retrieve all keys
$name='';
foreach ($keys as $key) //Loop
{
if (preg_match('/^(manufacturer\d+_name)$/'),$key))
{
$name=$key; // We've got a match!
}
}
2 - 如果manufacturerN_name始终是数组中的最后一个元素,请使用
$throwaway=end($option); //Retrieve last item in array
$name=key($option) //Get index of current position
或一些类似的构造
答案 1 :(得分:0)
您可以通过第一个密钥(manufacturer???_...
)中的sscanf
Docs获取该号码,然后使用sprintf
Docs格式化名称密钥:
foreach ($configOptions as $option) {
list($refkey) = each($option);
$number = sscanf($refkey, 'manufacturer%d_');
if (NULL === $number) {
throw new Exception('Could not find number in key "%s" or option %s.', $refkey, print_r($option, true));
}
$name = sprintf('manufacturer%d_name', $number);
}