簡體   English   中英

PHP中的簡單數組問題

[英]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) 將整個數組內爆成一個新變量

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM