Как получить комбинации массивов в php?

#php

#php

Вопрос:

У меня есть массив в php

 array(100,125,135);
  

Я хотел бы знать, как я могу получить все комбинации, как показано ниже, например?

 Eg:100=>125,100=>135,125=>100,125=>135,135=>100,135=>125
  

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

 $selected_items = array(100,125,135);
$total = count($selected_items);
$combination = array();
$newcom=0;
    for($i=0;$i<$total;$i  ){           
        if($newcom <= $total-1) $newcom = $newcom-1;
        echo  $newcom."-----";
         $combination[$i] = array($selected_items[$i]=> $selected_items[$newcom]);
            $newcom = $i 1;  
    }
  

Но это не работает для получения всех комбинаций

Пожалуйста, помогите мне.

Комментарии:

1. Подсказка: вам нужны два цикла.

2. en.wikipedia.org/wiki/…

Ответ №1:

Попробуйте это

 $temp = array(1, 2, 3);
$result = array();

foreach ($temp as $value)
{
    foreach ($temp as $value2)
    {
       if ($value != $value2) $result[$value] = $value2;
    }
}
  

Комментарии:

1. Но это показывает только массив ( [1] => 3 [2] => 3 [3] => 2 )

2. Я не вижу комбинацию 1,2

Ответ №2:

 $a = array(100,125,135);
$output = array();
foreach ($a as  $first) {
    $arr[$first]=array();
    foreach ($a as $second) {
        if($first != $second)
            $arr[$first][] = $second;
    }

}
$output = $arr;
print_r($output);
  

Комментарии:

1. Это не проблема. Вы всегда можете удалить свой ответ здесь.

2. проверка @defaultlocale, приведенная выше, неверна .. хахха, которая имеет 2 голоса

3. @Apptester Массив ( [100] => Массив ( [0] => 125 [1] => 135 ) [125] => Массив ( [0] => 100 [1] => 135 ) [135] => Массив ( [0] => 100 [1] => 125 ) )

4. виноват, извините. Не понял, что ваш ответ был другим. 1 🙂

Ответ №3:

Вы могли бы использовать пару циклов foreach —

 $sequence     = [100, 125, 135];
$permutations = [];

foreach ($sequence as $value) {
    foreach ($sequence as $value2) {
        if ($value != $value2) {
            $permutations[] = [$value => $value2];
        }
    }
}
  

Ответ №4:

Я не думаю, что это можно сделать. Массив содержит ключ и значение. В вашем примере вам нужен массив, ключи в котором могут быть одинаковыми. Вы просто перезапишете свои значения, поэтому, если вы запустите свой пример, результатом будет что-то вроде следующего:

  100=>135
,125=>135
,135=>125
  

Возможным решением могут быть многомерные массивы:

  100=>array(125, 135)
,125=>array(100, 135)
,135=>array(100, 125)