Не уверен, есть ли встроенная функция для этого, поэтому я подумал, что попрошу, прежде чем тратить время на то, чтобы написать письмо. Допустим, у меня есть массив:
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), чтобы взорвать весь массив в новую переменную