Простой вопрос массива в PHP

Не уверен, есть ли встроенная функция для этого, поэтому я подумал, что попрошу, прежде чем тратить время на то, чтобы написать письмо. Допустим, у меня есть массив:

Array ( ['first_name'] => John ['last_name'] => Doe ['ssn1'] => 123 ['ssn2'] => 45 ['ssn3'] => 6789 ) 

Как я могу создать новый ключ ['ssn'] который объединит значения других трех, чтобы привести к следующему:

 Array ( ['first_name'] => John ['last_name'] => Doe ['ssn'] => 123456789 ) 

Он разделяется, потому что есть 3 отдельных входа, таких как [ ]-[ ]-[ ] чтобы пользователь не зависал. Итак, каков был бы самый эффективный / элегантный способ сделать это? Благодаря!

редактировать

Похоже, что большинство разработало одно и то же простое решение. Должен дать ему первый. Всем спасибо!

Предполагая, что эти данные поступают из веб-формы, вы можете использовать соглашение о назначении ввода в свою пользу. Назовите элементы в порядке first_name, last_name, ssn [1], ssn [2], ssn [3]. $ _REQUEST автоматически назначит три элемента структурированному массиву.

 <input type="text" name="ssn[1]" /> <input type="text" name="ssn[2]" /> <input type="text" name="ssn[3]" /> array 'ssn' => array 1 => string '123' (length=3) 2 => string '456' (length=3) 3 => string '7890' (length=4) 

Тогда вы можете просто

 $_POST['ssn'] = implode('-', $_POST['ssn']); 

Простой и чистый.

 $arr['ssn'] = $arr['ssn1'] . $arr['ssn2'] . $arr['ssn3']; unset($arr['ssn1'], $arr['ssn2'], $arr['ssn3']); 

Я бы пошел с самым наивным решением, используя простую конкатенацию :

 $your_array['ssn'] = $your_array['ssn1'] . $your_array['ssn2'] . $your_array['ssn3']; 

И вы можете затем unset элементы, которые больше не полезны :

 unset($your_array['ssn1'], $your_array['ssn2'], $your_array['ssn3']); 

Возможно, этот код выглядит слишком наивным, но его легко написать и, что еще важнее, очень легко понять.

 $data['ssn']=$data['ssn1'].$data['ssn2'].$data['ssn3']; unset ($data['ssn1'],$data['ssn2'],$data['ssn3']); 

Как насчет:

 implode( array_intersect_key( $array, array_flip( array_filter( array_keys($array), create_function( '$k', 'return stristr($k, "ssn");' ))) ))); 

Это, вероятно, очень медленно, по сравнению с просто конкатенированием значений вручную, но было интересно разобраться.

Вы можете использовать implode ("", $ array), чтобы взорвать весь массив в новую переменную

http://www.php.net/manual/de/function.implode.php