Re: Re: Linking stuff

From: Date: Tue, 08 Jul 2008 20:56:37 +0000
Subject: Re: Re: Linking stuff
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-276465@lists.php.net to get a copy of this message
On Jul 8, 2008, at 3:38 PM, Shawn McKenzie wrote:
Philip Thompson wrote:
Hi all. I think I might be having a brain-fart afternoon, but I can't think of how to accomplish this. I want these "centers" to be linked to 1 another. If center A links to B and C, I want B to be linked to A and C, and C to A and B. So... it should look something like this: center link
A       B
A       C
B       A
B       C
C       A
C       B
These results will be stored in a database and each of the records is unique. To slightly simplify things (hopefully!), I can just store each of the centers in an array, like so: array(A,B,C,D). I figure I'll have to loop through the array (several times?) and do comparisons with each other one.
Basically, I don't want to over-complicate this for myself. Any guiding light would be appreciated on how to link all of these!
Thanks ~Philip
Well, it depends upon what you want to do with these. You'll have them in a db, so it's easy to get them out as an array. What's the problem? -Shawn
Ok, I figured out one solution. My brain finished farting. Here's what I came up with: <?php $center_ids = explode(",", $_POST["list"]); $count = count ($center_ids); $list = array(); for ($i=0; $i<$count; $i++) {
    for ($j=0; $j<$count; $j++) {
        if ($j != $i && !in_array($center_ids[$j], $list[$center_ids[$i]])) {
            $list[$center_ids[$i]][] = $center_ids[$j];
        }
    }
} foreach ($list as $cid1 => $array) {
    foreach ($array as $cid2) {
        $db->query("INSERT INTO center_link (center_id, link_center_id) VALUES ('$cid1', '$cid2')");
    }
} ?> The resulting array for $list (if centers 1, 2 and 3 are selected) is: Array (
    [1] => Array
        (
            [0] => 2
            [1] => 3
        )
    [2] => Array
        (
            [0] => 1
            [1] => 3
        )
    [3] => Array
        (
            [0] => 1
            [1] => 2
        )
) If there's a cleaner/better way, feel free to set me straight. ;) Thanks for your input, guys. ~Phil

« previous php.general (#276465) next »