kumer0_03 kumer0_03 - 6 months ago 9
PHP Question

PHP - Array within the same array

how do I include the same array inside foreach loop and remove the same value inside another array. My PHP skills is not strong and I would like to seek help from the experts here. Please see the scenario below.

$array = array("group1","group2","group3","group4");
//Result should be
group1 = group2,group3,group4
group2 = group1,group3,group4
group3 = group1,group2,group4
group4 = group1,group2,group3


I am only at:

$array = array('group1','group2','group3','group4');


foreach($array as $value){
echo '<br>'.$prodfilters.'= <br>';
foreach($arrayFilter as $xx){
echo $xx.'<br>';
}
}
//Result
group1 = group1,group2,group3,group4
group2 = group1,group2,group3,group4
group3 = group1,group2,group3,group4
group4 = group1,group2,group3,group4
//basically repeating itself each value from the outer foreach loop instead of removing the same value from the inner foreach loop.


Hope you can help a newbie here. Thanks in advance.

Answer

Here is a short solution using array_walk and array_diff functions:

$array = ["group1","group2","group3","group4"];
$result = [];

array_walk($array, function($v) use(&$result, $array){
    $result[$v] = array_diff($array, [$v]);   // it can be imploded into a string if needed
});

print_r($result);

The output:

Array
(
    [group1] => Array
        (
            [1] => group2
            [2] => group3
            [3] => group4
        )

    [group2] => Array
        (
            [0] => group1
            [2] => group3
            [3] => group4
        )

    [group3] => Array
        (
            [0] => group1
            [1] => group2
            [3] => group4
        )

    [group4] => Array
        (
            [0] => group1
            [1] => group2
            [2] => group3
        )
)

Now you can access each item by specifying its "name" as an array key, like $result['group3']