2015-08-15 95 views
1

我有兩個字符串。 一個是「Aa ee Gg」,另一個是「Aa Ee」。兩者都是毛色的遺傳學。在PHP中重組來自兩個字符串的字母

我想從兩者中產生一個新的組合。新字符串需要有每個字符串的「字母之一」。

例如AAEeG和( - )

我試圖把數組中的字符串,然後使用這些做出新的字符串。

+0

告訴我要在代碼格式生成數組... – MaggsWeb

+0

機管局EE千兆克節AA電氣工程師可以有很多解決方案在我的例子中,它將是 「AA Ee G-」,但它也可以是「ae Ee -g」,總是來自String1的一個「Letter」和來自String2的一個Letter。所以一個A和一個E以及一個G等...... – Anja

+0

爲什麼'AA Ee G-'而不是'AA eE G''?後者似乎對我更有意義。 –

回答

0

這可能是一個略顯晦澀的解決方案,但它給你你正在尋找的結果:

$first = 'Aa ee Gg'; 
$second = 'Aa Ee'; 

$tokens = array_map(function($a, $b) { 
    return ($a[0] ?: '-') . ($b[0] ?: '-'); 
}, explode(' ', $first), explode(' ', $second)); 

$string = implode(' ', $tokens); 

var_dump($string); 

這產生了:

string(8) "AA eE G-" 

一個快速的解釋:

  1. 你從兩個字符串$first$second開始,以及要合併的值。
  2. 將空白的每個字符串分解爲兩個數組,分別爲['Aa', 'ee', 'Gg']['Aa', 'Ee']
  3. 使用array_map()一個回調應用於
  4. 在PHP,可以使用陣列解引用語法($arr[0])取消引用字符串的兩個陣列的每個元素。這裏我們使用幾個shortcut ternary operators來返回當前字符串中的第一個字符,如果沒有字符存在,則返回' - '。
  5. array_map()返回一個字符串數組,在這種情況下爲['AA', 'eE', 'Gg']
  6. 最後,implode()數組到字符串"AA eE G-"

希望這有助於:)

+0

謝謝!我不得不承認我的方式直接走向了錯誤的方向!這正是我可以使用:)謝謝! – Anja

+0

沒問題!有趣的問題 - 我在這裏找到另一個解決方案:D –

相關問題