从数组名称中检索$ _POST变量

时间:2013-02-07 21:05:40

标签: php post

请考虑以下事项:

<input type="hidden" name="random[variable][here]" value="valueofrandom"/>

如果我们将名称作为字符串,是否有更好的方法来检索其值?以下工作,但它似乎不是智能

function getPostValueFromName($name) {
    // Example string name: random[variable][here]
    $parts = preg_split('/\[|\]/i', $name, -1, PREG_SPLIT_NO_EMPTY);

    if (isset($parts[3])) {
        return $_POST[$parts[0]][$parts[1]][$parts[2][$parts[3]]];
    } elseif (isset($parts[2])) {
        return $_POST[$parts[0]][$parts[1]][$parts[2]];
    } elseif (isset($parts[1])) {
        return $_POST[$parts[0]][$parts[1]];
    } else {
        return $_POST[$parts[0]];
    }
}

谢谢!

1 个答案:

答案 0 :(得分:0)

我使用 https://github.com/symfony/PropertyAccess 来做这样的事情。

使用它,您可以使用

获取random[variable][here]
$accessor = new PropertyAccessor();

$val = $accessor->getValue($_POST, 'random.variable.here');
// or
$val = $accessor->getValue($_POST, 'random[variable][here]');