2011-08-30 90 views
2

例1:有關如何簡化此代碼的任何建議?

$name    =$this->input->post('name', TRUE); 
    $address    =$this->input->post('address', TRUE); 
    $website    =$this->input->post('website', TRUE); 
    $phone    =$this->input->post('phone', TRUE); 
    $fax     =$this->input->post('fax', TRUE); 

這讓我有些大量的代碼,因爲我允許用戶輸入信息很多....

+0

這是簡單的代碼,那麼更簡化些什麼? – feeela

+0

我想他想要一些循環的方法。 – shanethehat

回答

5

使用一個循環:

$fields = array('name', 'address', 'website', 'phone', 'fax'); 

foreach($fields as $field) { 
    ${$field} = $this->input->post($field, TRUE); 
} 
+0

Noooo變量,arggh –

+0

但是,如果OP稍後使用諸如'$ name'的變量,則該變量是必需的。 – xdazz

+1

是的,但最好使用這個數組。不過沒關係,它可以工作 –

2

你可以建立一個數組並通過它走。

$fields = array(); // Use an array rather than single variables 
$my_fields = array("name", "address", "website"); // etc. etc. 

foreach ($my_fields as $field) 
$fields[$field] = $this->input->post($field, TRUE); 

print_r($fields); // A nice array with all the field values 
1

以及更好的方式將分組中的變量數組:

$keys = array ('name', 'address', 'website', 'phone', 'fax'); 
$data = array(); 
foreach($keys as $k){ 
    $data[$k] = $this->input->post($k, TRUE); 
} 

你可以隨時提取$的數據,如果你喜歡,但我喜歡保持它在陣列中

,你應該把它放在一個函數:

function fromRequest($method='post', $keys) { 
    if ($method != 'post' && $method!= 'get') { throw new Exception('Invalid method'); } 
    $data = array(); 
    foreach($keys as $k) 
     $data[$k] = $this->input->$method($k, TRUE); 
    return $data; 
} 
+0

不需要'eval'。即使你想使用動態變量。 –

+0

我會+1你的'$ data'解決方案(這是完美的),如果你刪除第二個選項的變量:) –

+0

我喜歡使用eval,而不是這些類型的東西,但只要你小心你在裏面放什麼,這非常有用。我使用它來爲某些定義的模式生成代碼 – galchen