使用Zend Framework 1.12,只需使用getParam()方法即可。注意getParam()不只的結果爲NULL爲沒有可用的鍵,一個串1鍵和陣列,用於多個鍵:
否 'id' 值
http://domain.com/module/controller/action/
$id = $this->getRequest()->getParam('id');
// NULL
單 'id' 值
http://domain.com/module/controller/action/id/122
$id = $this->getRequest()->getParam('id');
// string(3) "122"
多「身份證」值:
http://domain.com/module/controller/action/id/122/id/2584
$id = $this->getRequest()->getParam('id');
// array(2) { [0]=> string(3) "122" [1]=> string(4) "2584" }
這可能是有問題的,如果你總是希望在你的代碼串,出於某種原因,更值在URL中設置:在某些情況下,例如,你可以運行進入錯誤「Array to string conversion」。這裏有一些技巧,以避免這樣的錯誤,以確保您始終獲得結果你getParam()不只需要的類型:
如果你想在$ ID是一個陣列(或NULL如果param未設置)
$id = $this->getRequest()->getParam('id');
if($id !== null && !is_array($id)) {
$id = array($id);
}
http://domain.com/module/controller/action/
// NULL
http://domain.com/module/controller/action/id/122
// array(1) { [0]=> string(3) "122" }
如果總是希望的$ id是一個陣列(沒有NULL如果沒有設置值,只是空數組):
$id = $this->getRequest()->getParam('id');
if(!is_array($id)) {
if($id === null) {
$id = array();
} else {
$id = array($id);
}
}
http://domain.com/module/controller/action/
// array(0) { }
http://domain.com/module/controller/action/id/122
// array(1) { [0]=> string(3) "122" }
山姆Ë如上面一行(沒有NULL,始終陣列):
$id = (array)$this->getRequest()->getParam('id');
如果你想在$ ID是一個字符串(在第一個可用值,保持NULL完好)
$id = $this->getRequest()->getParam('id');
if(is_array($id)) {
$id = array_shift(array_values($id));
}
http://domain.com/module/controller/action/
// NULL
http://domain.com/module/controller/action/122/id/2584
// string(3) "122"
如果你想在$ ID是一個字符串(在最後一個可用值,保持完好NULL)
$id = $this->getRequest()->getParam('id');
if(is_array($id)) {
$id = array_pop(array_values($id));
}
http://domain.com/module/controller/action/
// NULL
http://domain.com/module/controller/action/122/id/2584/id/52863
// string(5) "52863"
也許有更短的/更好的方法來解決這些getParam的'響應類型',但是如果你要使用上面的腳本,可以更清潔地爲它創建另一個方法(擴展的助手或其他)。