我想要一个提示或更好的解决方案:
我对网址进行常规表达匹配,例如'/ product / 100 /'
preg_match('/^\/(?<name>\w+)\/(?<digit>\d+)\/$/', '/product/100/', $matches);
结果我在$matches
上得到以下数组:
array
0 => string '/product/100/' (length=13)
'name' => string 'product' (length=7)
1 => string 'product' (length=7)
'digit' => string '100' (length=3)
2 => string '100' (length=3)
我如何使用reduce this array来获取它?
array
'name' => string 'product' (length=7)
'digit' => string '100' (length=3)
在我得到匹配的表达式之后,我调用一个函数并将'named'键作为函数的参数。
call_user_func_array($view, $just_named_args_no_integer_keys);
我希望任何人都可以给我任何暗示。
最好的问候
答案 0 :(得分:2)
只需运行从array_keys()到array_filter()的键:
/* This is for PHP 5.3, I'm sure you'll figure out how to the same thing pre 5.3 :) */
$allKeys = array_keys($view);
$namedKeys = array_filter($allKeys, function($value) { return !is_numeric($value); });
<强>更新强>
没有正确阅读问题。在这种情况下,实际上只是预测数据:
$namedValues = array();
foreach ($view as $key => $value)
if (!is_numeric($key))
$namedValues[$key] = $value;