如何将第一个数组值设为大写

时间:2014-02-07 08:28:01

标签: php arrays

我正在尝试将第一个数组值设为大写。

代码:

$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;
}

2 个答案:

答案 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_maparray_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