2013-02-07 56 views
0

考虑以下几点:

<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]]; 
    } 
} 

谢谢!

+0

1.让你的函数的递归。 2.如果你不关心数组键,为什么首先使用它们? – user20232359723568423357842364

+0

我必须缺少一些简单的东西。你将如何以'$ _POST'的形式递归地构建它? –

回答

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]'); 
+0

喜欢不需要symfony。 –

+0

Symfony不是必需的。 PropertyAccess可以作为独立使用 – simshaun