2016-08-26 2 views
0

У меня есть массив, в котором хранятся значения пользователей, которые будут отправлены в execute(); функция для запроса mysqli. Итак, я хочу, чтобы значения индекса были заменены.замена значения индекса массива

Теперь, что я сделал здесь, используется str_replace(); чтобы сделать это в цикле foreach, но проблема в том, как я получу обновленный массив?

$fields = array(
'field_id' => '123', 
'field_name' => 'test_name' 
); 

foreach ($fields as $key => $field) { 
    $val = str_replace($key, $key, ':'.$key); 
    $data = array(); 
    $data[$val] = $field; 
} 

//I only got the value for the last index 1st is not there 
print_r($data); 

//output which I am expecting will be the following 
$fields = array(
    ':field_id' => '123', 
    ':field_name' => 'test_name' 
); 

Пожалуйста, дайте мне знать, если кто-нибудь может помочь мне

+0

Я не думаю, что str_replace будет делать то, что вы хотите. Почему бы вам просто не сделать так: '$ fields [':'. $ Key] = $ field; unset $ fields [$ key]; ' –

+0

@ LuciaAngermüller Позвольте мне попробовать это –

+0

' str_replace (searchterm, replacement, subject) ', вы делаете это неправильно, возможно ... также вы должны создать * пустой * массив перед циклом, а не внутри, или останется только последняя запись ... – Jakumi

ответ

3

Цель состоит в том, чтобы предварять каждый ключ с двоеточием (:).

Это может быть достигнуто с помощью цикла через основной массив, изменяя каждый ключ и заполняя эти ключевые пары значений в $ newArray.

Мы можем перебрать $ полей, принеси каждый ключ и предварять его с «:», и сделать это ключ нашего $ newArray. i.e field_id становится: field_id, field_name становится: field_name .. и так далее.

Значения копируются из $ полей и положить в $ newArray как это.

$newArray = array(); 
foreach ($fields as $key => $field) { 
    $newArray[':'.$key] = $field; 
} 
+1

Спасибо, что это сработало для меня, но я не понял, что на самом деле вы здесь сделали –

+0

Итак, когда мы определяем массив, как $ a = array(); то, что мы храним в $ a, будет автоматически преобразовано в массив –

+0

Большое спасибо за решения и объяснения –

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