[英]Simple array question in PHP
不確定是否有內置的 function 可以做到這一點,所以我想在浪費時間寫之前先問問。 假設我有一個數組:
Array
(
['first_name'] => John
['last_name'] => Doe
['ssn1'] => 123
['ssn2'] => 45
['ssn3'] => 6789
)
如何創建新鍵['ssn']
它將結合其他三個的值,以產生以下結果:
Array
(
['first_name'] => John
['last_name'] => Doe
['ssn'] => 123456789
)
它是分開的,因為有 3 個單獨的輸入,例如[ ]-[ ]-[ ]
以防止用戶搞砸它。 那么,最有效/最優雅的方式是什么? 謝謝!
編輯
看起來大多數人都想出了同樣簡單的解決方案。 必須先給它。 感謝大家!
$arr['ssn'] = $arr['ssn1'] . $arr['ssn2'] . $arr['ssn3'];
unset($arr['ssn1'], $arr['ssn2'], $arr['ssn3']);
我會 go 使用最簡單的解決方案,使用簡單的連接:
$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");'
)))
)));
與僅手動連接值相比,這可能非常緩慢,但弄清楚這一點很有趣。
假設此數據來自 web 表單,您可以使用輸入命名約定來獲得優勢。 按 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']);
簡單干凈。
您可以使用 implode("",$array) 將整個數組內爆成一個新變量
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.