#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. Подсказка: вам нужны два цикла.
Ответ №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)