объединить элементы массива конкретные элементы массива - PullRequest
0 голосов
/ 13 января 2012

Я получил этот массив:

array (
  0 => 'K.',
  1 => 'Vrachtschip',
  2 => 'L.',
  3 => 'Gevechtsschip',
  4 => 'Z.',
  5 => 'Gevechtsschip',
  6 => 'Kruiser',
  7 => 'Slagschip',
  8 => 'Bommenwerper',
  9 => 'Vernietiger',
  10 => 'Interceptor.',
)

из Могу ли я объединить элементы [0] с [1], потому что К. Врачччип должен быть вместе. такая же задница [2] и [3]; и [4] с [5]. если есть 1 буква, а затем точка (k), она должна быть объединена со следующим элементом массива.

Кто-нибудь, кто может мне помочь:)?

Ответы [ 4 ]

2 голосов
/ 13 января 2012

Как насчет:

$arr = array ( 
    'K.',
    'Vrachtschip',
    'L.',
    'Gevechtsschip',
    'Z.',
    'Gevechtsschip',
    'Kruiser',
    'Slagschip',
    'Bommenwerper',
    'Vernietiger',
    'Interceptor',
    'B.',
);

$concat = '';
$result = array();
foreach ($arr as $elem) {
    if (preg_match('/^[A-Z]\.$/', $elem)) {
        $concat = $elem;
        continue;
    }
    $result[] = $concat.$elem;
    $concat = '';
}
if ($concat) $result[] = $concat;
print_r($result);

выход:

Array
(
    [0] => K.Vrachtschip
    [1] => L.Gevechtsschip
    [2] => Z.Gevechtsschip
    [3] => Kruiser
    [4] => Slagschip
    [5] => Bommenwerper
    [6] => Vernietiger
    [7] => Interceptor
    [8] => B.
)
0 голосов
/ 13 января 2012

Я бы попробовал что-то вроде этого:

for($idx=0, $max = count($array_in); $idx < $max; $idx++)
{
   if(preg_match('/^[a-z]\.$/i', $array_in[$idx]))
   {
      $array_out[] = $array_in[$idx].$array_in[$idx+1];
      $idx++;
   }
   else
   {
      $array_out[] = $array_in[$idx];
   }

}
0 голосов
/ 13 января 2012

Я бы, вероятно, сделал следующее (псевдокод):

  1. Создать пустой массив для результата
  2. Перебрать исходный массив
  3. Для каждого значения: оно соответствует /^[a-z]\.$/i?
  4. Если да, посмотреть, содержит ли исходный массив следующий элемент?
  5. Если да, объединить два элемента и добавить в результирующий массив, пропустить следующий элемент в цикле
  6. Если нет (п. 4 или 5), добавить непосредственно в результирующий массив.
0 голосов
/ 13 января 2012

Попробуйте использовать регулярное выражение для проверки всех записей вашего массива.
Если событие установлено, сопоставьте значение вашей записи со следующим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...