2015-06-06 3 views
0

Я сделаю все возможное, чтобы объяснить вам эту идею. У меня есть массив значений, я хотел бы знать, есть ли способ создать другой массив комбинированных значений. Так, например:Создание групп значений из значений массива

Если у меня есть этот код:

array('ec','mp','ba');

Я хотел бы иметь возможность выводить что-то вроде этого:

'ec,mp', 'ec,ba', 'mp,ba', 'ec,mp,ba'

Возможно ли это? В идеале я не хочу иметь повторяющиеся записи, такие как 'ec,mp' и 'mp,ec', хотя, поскольку они были бы одинаковыми

+0

Вы пробовали что-то (код; исследование; псевдо-код)? – Rizier123

+0

Это то же самое, что вам нужно? http://stackoverflow.com/questions/10572546/php-merge-arrays-with-only-not-duplicated-values ​​ – johnny

+0

@ Rizier123 Я ничего не пытался, потому что я не знаю, с чего начать с этой логики, если я honest –

ответ

1

Вы можете принять произвольное решение всегда ставить «нижнюю» строку. После того, как вы приняли это решение, это просто прямой вверх вложенный цикл:

$arr = array('ec','mp','ba'); 
$result = array(); 
foreach ($arr as $s1) { 
    foreach ($arr as $s2) { 
     if ($s1 < $s2) { 
      $result[] = array($s1, $s2); 
     } 
    } 
} 
+0

Это замечательно, единственное, чего он не делает, - это исключить все значения массива в одну комбинацию ('ec, mp, ba''), но я могу поработать над этим. Спасибо за быстрое решение :) –

-1

Вы смотрели на функции implode

<?php 

    $array = array('ec','mp','ba'); 
    $comma_separated = implode(",", $array); 

    echo $comma_separated; // ec,mp,ba 
?> 

Вы могли бы использовать это в качестве основы для вашей программы и то, что вы пытаясь добиться.

0

Вы можете сделать это следующим образом:

$arr = array('ec','mp','ba', 'ds', 'sd', 'ad'); 

$newArr = array(); 

foreach($arr as $key=>$val) { 
     if($key % 2 == 0) { 
       $newArr[] = $val; 
     } else { 
       $newArr[floor($key/2)] = $newArr[floor($key/2)] . ',' . $val; 
     } 
} 

print_r($newArr); 

И результат:

Array 
(
    [0] => ec,mp 
    [1] => ba,ds 
    [2] => sd,ad 
) 
Смежные вопросы