如何连接这个PHP数组?

时间:2018-02-22 16:55:02

标签: php arrays concatenation concat

如果我有以下数组:

Array
(
    [0] => JHN.1.1|Tun fara farawa akwai Kalma, Kalman kuwa yana nan tare da Allah, Kalman kuwa Allah ne. 
    [1] => JHN.1.2|Yana nan tare da Allah tun fara farawa.
     .
     .
     .
    [25] => JHN.1.20|Bai yi mūsu ba, amma ya shaida a fili cewa, “Ba ni ne Kiristi ba.”
 -> [26] => JHN.1.21|Sai suka tambaye shi suka ce, “To, wane ne kai? Kai ne Eliya?”
 -> [27] => JHN.1.21|Ya ce, “Aʼa, ni ba shi ba ne.”
 -> [28] => JHN.1.21|“Kai ne Annabin nan?”
 -> [29] => JHN.1.21|Ya amsa ya ce, “Aʼa.”
    [30] => JHN.1.22|A ƙarshe suka ce, “Wane ne kai? Ka ba mu amsa don mu mayar wa waɗanda suka aike mu. Me kake ce da kanka?”

我想成为这个:

Array
(
    [0] => JHN.1.1|Tun fara farawa akwai Kalma, Kalman kuwa yana nan tare da Allah, Kalman kuwa Allah ne. 
    [1] => JHN.1.2|Yana nan tare da Allah tun fara farawa.
     .
     .
     .
    [25] => JHN.1.20|Bai yi mūsu ba, amma ya shaida a fili cewa, “Ba ni ne Kiristi ba.”
 -> [26] => JHN.1.21|Sai suka tambaye shi suka ce, “To, wane ne kai? Kai ne Eliya?” Ya ce, “Aʼa, ni ba shi ba ne.” “Kai ne Annabin nan?” Ya amsa ya ce, “Aʼa.”
    [27] => JHN.1.22|A ƙarshe suka ce, “Wane ne kai? Ka ba mu amsa don mu mayar wa waɗanda suka aike mu. Me kake ce da kanka?”

将经文与多个片段连接起来的有效方法是什么?

1 个答案:

答案 0 :(得分:1)

循环遍历数组并构建一个键入JHN的字典。

$array = [
    "JHN.1.1|Tun fara farawa akwai Kalma, Kalman kuwa yana nan tare da Allah, Kalman kuwa Allah ne.",
    "JHN.1.2|Yana nan tare da Allah tun fara farawa.",
    "JHN.1.20|Bai yi mūsu ba, amma ya shaida a fili cewa, “Ba ni ne Kiristi ba.”",
    "JHN.1.21|Sai suka tambaye shi suka ce, “To, wane ne kai? Kai ne Eliya?”",
    "JHN.1.21|Ya ce, “Aʼa, ni ba shi ba ne.”",
    "JHN.1.21|“Kai ne Annabin nan?”",
    "JHN.1.21|Ya amsa ya ce, “Aʼa.”",
    "JHN.1.22|A ƙarshe suka ce, “Wane ne kai? Ka ba mu amsa don mu mayar wa waɗanda suka aike mu. Me kake ce da kanka?”"
];

$dict = [];

foreach ($array as $str) {
    // split string e.g. $jhn = JHN.1.1, $value = Tun fara...
    list($jhn, $value) = explode('|', $str);
    // add key to dictionary if it does not exist
    if (!isset($dict[$jhn])) {
        $dict[$jhn] = [];
    }
    // add value
    $dict[$jhn][] = $value;
}

现在只需使用字典重建数组。

$result = [];
foreach ($dict as $jhn => $values) {
    $result[] = $jhn . '|' . implode(' ', $values);
}

注意:如果您有多个|,则会失败在每个字符串中。如果是这样,那么您将需要使用正则表达式或其他东西来分割字符串。