2011-08-30 44 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