2014-02-07 2 views
1

Я пытаюсь сделать первое значение массива в верхнем регистре.Как сделать первое значение массива в верхнем регистре

Код:

$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']); 

но чем не сохраняет значение в БД с прописными буквами, но, как это то, что пользователь вводит.

Текущий выпуск $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

@ Nouphal.M Пожалуйста, посмотрите мой обновленный вопрос для этого же. Спасибо –

+0

Просто интересно, это действительно сложно, как невозможно? –

ответ

0

Это должно работать:

$data = $this->positions_model->array_from_post(array('position', 'label')); 
$data['position'] = strtoupper($data['position']); 
$this->positions_model->save($data, $id); 

Если его нет, то $ массивов данных только для чтения атрибута.

+0

Спасибо за ответ. Но, как я уже упоминал в своем вопросе, это изменение значения, но не сохранение в базе данных с помощью strtoupper(), но способ использования входов –

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 вместо этого.

+0

Спасибо за подробный ответ.Он выдает ошибку на 'if ('position' == array_search ($ a, $ data))' line Ошибка: 'Message: array_search() ожидает, что параметр 2 будет массивом, null задан какой-либо идеей? –

+0

@JatinSoni Я предпочитаю использовать 'array_walk' сам, и я рекомендую. Но метод 'array_map' работает хорошо для меня: http://3v4l.org/TiXNa Убедитесь, что вы определили' $ data' глобально внутри функции: 'global $ data;'. –

+0

Хорошо, дайте мне попробовать и посмотрим, работает ли для меня .. –

Смежные вопросы