2013-02-07 57 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