我正在尝试将第一个数组值设为大写。
代码:
$data = $this->positions_model->array_from_post(array('position', 'label'));
$this->positions_model->save($data, $id);
所以在save($data, $id)
到数据库之前我想将position
值转换为大写。我试过这个
$data['position'] = strtoupper($data['position']);
但是它没有以大写形式存储db中的值,而是因为它是用户输入的内容。
$data
的当前输出:
Array ( [position] => it [label] => Information Technology )
我希望it
大写为IT
添加了模型方法
public function get_positions_array($id = NULL, $single = FALSE)
{
$this->db->get($this->_table_name);
$positions = parent::get($id, $single);
$array = array();
foreach($positions as $pos){
$array[] = get_object_vars($pos);
}
return $array;
}
主要MY_Model方法
public function array_from_post($fields)
{
$data = array();
foreach ($fields as $field) {
$data[$field] = $this->input->post($field);
}
return $data;
}
答案 0 :(得分:0)
这应该有效:
$data = $this->positions_model->array_from_post(array('position', 'label'));
$data['position'] = strtoupper($data['position']);
$this->positions_model->save($data, $id);
如果不是,那么$ data数组只有read属性。
答案 1 :(得分:0)
array_from_post()
方法返回一个格式如下的数组:
$data = array(
'position' => 'it',
'label' => 'Information Technology'
);
因此,您可以使用array_map
或array_walk
函数将数组的第一个值设为大写:
$data = array_map(function($a) {
static $i = 0;
if ($i === 0) { $i++; return strtoupper($a); }
else return $a;
}, $array);
注意:这仅适用于PHP 5.3及以上版本,而不是use the function name。
以下是array_walk
示例,它修改了$data
:
array_walk($data, function(&$value, $key) {
static $i = 0;
if ($i == 0) { $i++; $value = strtoupper($value); }
});
同样,如果您使用的是PHP 5.2.x或更低版本,则可以改为pass the function name。