Connecting Tech Pros Worldwide Forums | Help | Site Map

array question

Stormkid
Guest
 
Posts: n/a
#1: Jul 17 '05
Hi Group I'm trying to figure out a way that I can take two (two
dimensional) arrays and avShed and shed, and subtract the matching elements
in shed from avShed I've pasted the arrays blow from a print_r cmd any
suggestions would be great. Thanks much Todd
//avShed array

Array ( [0] => Array ( [dayOfWeek] => 1 [timeInt] => 08:00 ) [1] => Array
( [dayOfWeek] => 1 [timeInt] => 08:05 ) [2] => Array ( [dayOfWeek] => 1
[timeInt] => 08:10 ) [3] => Array ( [dayOfWeek] => 1 [timeInt] => 08:15 )
[4] => Array ( [dayOfWeek] => 1 [timeInt] => 08:20 ) [5] => Array (
[dayOfWeek] => 1 [timeInt] => 08:25 ) [6] => Array ( [dayOfWeek] => 1
[timeInt] => 08:30 ) [7] => Array ( [dayOfWeek] => 1 [timeInt] => 08:35 )
[8] => Array ( [dayOfWeek] => 1 [timeInt] => 08:40 ) [9] => Array (
[dayOfWeek] => 1 [timeInt] => 08:45 ) [10] => Array ( [dayOfWeek] => 1
[timeInt] => 08:50 ) [11] => Array ( [dayOfWeek] => 1 [timeInt] => 08:55 )
[12] => Array ( [dayOfWeek] => 1 [timeInt] => 09:00 ) [13] => Array (
[dayOfWeek] => 1 [timeInt] => 09:05 ) [14] => Array ( [dayOfWeek] => 1
[timeInt] => 09:10 ) [15] => Array ( [dayOfWeek] => 1 [timeInt] => 09:15 )
[16] => Array ( [dayOfWeek] => 1 [timeInt] => 09:20 ) [17] => Array (
[dayOfWeek] => 1 [timeInt] => 09:25 ) [18] => Array ( [dayOfWeek] => 1
[timeInt] => 09:30 ) [19] => Array ( [dayOfWeek] => 1 [timeInt] => 09:35 )
[20] => Array ( [dayOfWeek] => 1 [timeInt] => 09:40 ) [21] => Array (
[dayOfWeek] => 1 [timeInt] => 09:45 ) [22] => Array ( [dayOfWeek] => 1
[timeInt] => 09:50 ) [23] => Array ( [dayOfWeek] => 1 [timeInt] => 09:55 )
[24] => Array ( [dayOfWeek] => 1 [timeInt] => 10:00 ) [25] => Array (
[dayOfWeek] => 1 [timeInt] => 10:05 ) [26] => Array ( [dayOfWeek] => 1
[timeInt] => 10:10 ) [27] => Array ( [dayOfWeek] => 1 [timeInt] => 10:15 )
[28] => Array ( [dayOfWeek] => 1 [timeInt] => 10:20 ) [29] => Array (
[dayOfWeek] => 1 [timeInt] => 10:25 ) [30] => Array ( [dayOfWeek] => 1
[timeInt] => 10:30 ) [31] => Array ( [dayOfWeek] => 1 [timeInt] => 10:35 )
[32] => Array ( [dayOfWeek] => 1 [timeInt] => 10:40 ) [33] => Array (
[dayOfWeek] => 1 [timeInt] => 10:45 ) [34] => Array ( [dayOfWeek] => 1
[timeInt] => 10:50 ) [35] => Array ( [dayOfWeek] => 1 [timeInt] => 10:55 )
[36] => Array ( [dayOfWeek] => 1 [timeInt] => 11:00 ) [37] => Array (
[dayOfWeek] => 1 [timeInt] => 11:05 ) [38] => Array ( [dayOfWeek] => 1
[timeInt] => 11:10 ) [39] => Array ( [dayOfWeek] => 1 [timeInt] => 11:15 )
[40] => Array ( [dayOfWeek] => 1 [timeInt] => 11:20 ) [41] => Array (
[dayOfWeek] => 1 [timeInt] => 11:25 ) [42] => Array ( [dayOfWeek] => 1
[timeInt] => 11:30 ) [43] => Array ( [dayOfWeek] => 1 [timeInt] => 11:35 )
[44] => Array ( [dayOfWeek] => 1 [timeInt] => 11:40 ) [45] => Array (
[dayOfWeek] => 1 [timeInt] => 11:45 ) [46] => Array ( [dayOfWeek] => 1
[timeInt] => 11:50 ) [47] => Array ( [dayOfWeek] => 1 [timeInt] => 11:55 )
[48] => Array ( [dayOfWeek] => 2 [timeInt] => 13:00 ) [49] => Array (
[dayOfWeek] => 2 [timeInt] => 13:05 ) [50] => Array ( [dayOfWeek] => 2
[timeInt] => 13:10 ) [51] => Array ( [dayOfWeek] => 2 [timeInt] => 13:15 )
[52] => Array ( [dayOfWeek] => 2 [timeInt] => 13:20 ) [53] => Array (
[dayOfWeek] => 2 [timeInt] => 13:25 ) [54] => Array ( [dayOfWeek] => 2
[timeInt] => 13:30 ) [55] => Array ( [dayOfWeek] => 2 [timeInt] => 13:35 )
[56] => Array ( [dayOfWeek] => 2 [timeInt] => 13:40 ) [57] => Array (
[dayOfWeek] => 2 [timeInt] => 13:45 ) [58] => Array ( [dayOfWeek] => 2
[timeInt] => 13:50 ) [59] => Array ( [dayOfWeek] => 2 [timeInt] => 13:55 )
[60] => Array ( [dayOfWeek] => 2 [timeInt] => 14:00 ) [61] => Array (
[dayOfWeek] => 2 [timeInt] => 14:05 ) [62] => Array ( [dayOfWeek] => 2
[timeInt] => 14:10 ) [63] => Array ( [dayOfWeek] => 2 [timeInt] => 14:15 )
[64] => Array ( [dayOfWeek] => 2 [timeInt] => 14:20 ) [65] => Array (
[dayOfWeek] => 2 [timeInt] => 14:25 ) [66] => Array ( [dayOfWeek] => 2
[timeInt] => 14:30 ) [67] => Array ( [dayOfWeek] => 2 [timeInt] => 14:35 )
[68] => Array ( [dayOfWeek] => 2 [timeInt] => 14:40 ) [69] => Array (
[dayOfWeek] => 2 [timeInt] => 14:45 ) [70] => Array ( [dayOfWeek] => 2
[timeInt] => 14:50 ) [71] => Array ( [dayOfWeek] => 2 [timeInt] => 14:55 )
[72] => Array ( [dayOfWeek] => 2 [timeInt] => 15:00 ) [73] => Array (
[dayOfWeek] => 2 [timeInt] => 15:05 ) [74] => Array ( [dayOfWeek] => 2
[timeInt] => 15:10 ) [75] => Array ( [dayOfWeek] => 2 [timeInt] => 15:15 )
[76] => Array ( [dayOfWeek] => 2 [timeInt] => 15:20 ) [77] => Array (
[dayOfWeek] => 2 [timeInt] => 15:25 ) [78] => Array ( [dayOfWeek] => 2
[timeInt] => 15:30 ) [79] => Array ( [dayOfWeek] => 2 [timeInt] => 15:35 )
[80] => Array ( [dayOfWeek] => 2 [timeInt] => 15:40 ) [81] => Array (
[dayOfWeek] => 2 [timeInt] => 15:45 ) [82] => Array ( [dayOfWeek] => 2
[timeInt] => 15:50 ) [83] => Array ( [dayOfWeek] => 2 [timeInt] => 15:55 )
[84] => Array ( [dayOfWeek] => 2 [timeInt] => 16:00 ) [85] => Array (
[dayOfWeek] => 2 [timeInt] => 16:05 ) [86] => Array ( [dayOfWeek] => 2
[timeInt] => 16:10 ) [87] => Array ( [dayOfWeek] => 2 [timeInt] => 16:15 )
[88] => Array ( [dayOfWeek] => 2 [timeInt] => 16:20 ) [89] => Array (
[dayOfWeek] => 2 [timeInt] => 16:25 ) [90] => Array ( [dayOfWeek] => 2
[timeInt] => 16:30 ) [91] => Array ( [dayOfWeek] => 2 [timeInt] => 16:35 )
[92] => Array ( [dayOfWeek] => 2 [timeInt] => 16:40 ) [93] => Array (
[dayOfWeek] => 2 [timeInt] => 16:45 ) [94] => Array ( [dayOfWeek] => 2
[timeInt] => 16:50 ) [95] => Array ( [dayOfWeek] => 2 [timeInt] => 16:55 ) )


// shed array
Array ( [0] => Array ( [dayOfWeek] => 1 [timeInt] => 08:00 ) [1] => Array
( [dayOfWeek] => 1 [timeInt] => 08:05 ) [2] => Array ( [dayOfWeek] => 1
[timeInt] => 08:10 ) [3] => Array ( [dayOfWeek] => 1 [timeInt] => 08:15 )
[4] => Array ( [dayOfWeek] => 1 [timeInt] => 08:40 ) [5] => Array (
[dayOfWeek] => 1 [timeInt] => 08:45 ) [6] => Array ( [dayOfWeek] => 1
[timeInt] => 08:50 ) [7] => Array ( [dayOfWeek] => 1 [timeInt] => 08:55 )
[8] => Array ( [dayOfWeek] => 2 [timeInt] => 14:00 ) [9] => Array (
[dayOfWeek] => 2 [timeInt] => 14:05 ) [10] => Array ( [dayOfWeek] => 2
[timeInt] => 14:10 ) [11] => Array ( [dayOfWeek] => 2 [timeInt] => 14:15 )
[12] => Array ( [dayOfWeek] => 2 [timeInt] => 14:20 ) [13] => Array (
[dayOfWeek] => 2 [timeInt] => 14:25 ) [14] => Array ( [dayOfWeek] => 2
[timeInt] => 14:30 ) [15] => Array ( [dayOfWeek] => 2 [timeInt] => 14:35 )
[16] => Array ( [dayOfWeek] => 2 [timeInt] => 15:00 ) [17] => Array (
[dayOfWeek] => 2 [timeInt] => 15:05 ) [18] => Array ( [dayOfWeek] => 2
[timeInt] => 15:10 ) [19] => Array ( [dayOfWeek] => 2 [timeInt] => 15:15 ) )


Shawn Wilson
Guest
 
Posts: n/a
#2: Jul 17 '05

re: array question




Stormkid wrote:[color=blue]
>
> Hi Group I'm trying to figure out a way that I can take two (two
> dimensional) arrays and avShed and shed, and subtract the matching elements
> in shed from avShed I've pasted the arrays blow from a print_r cmd any
> suggestions would be great. Thanks much Todd
> //avShed array
>
> Array ( [0] => Array ( [dayOfWeek] => 1 [timeInt] => 08:00 ) [1] => Array
> ( [dayOfWeek] => 1 [timeInt] => 08:05 ) [2] => Array ( [dayOfWeek] => 1[/color]
<snip>[color=blue]
> [timeInt] => 16:50 ) [95] => Array ( [dayOfWeek] => 2 [timeInt] => 16:55 ) )
>
> // shed array
> Array ( [0] => Array ( [dayOfWeek] => 1 [timeInt] => 08:00 ) [1] => Array[/color]
<snip>[color=blue]
> [timeInt] => 15:10 ) [19] => Array ( [dayOfWeek] => 2 [timeInt] => 15:15 ) )[/color]

UNTESTED:

foreach($shed as $arr) {
for($i=0;$i<count($avShed);++$i) {
if ($arr[1] == $avShed[$i][1] && $arr[0] == $avShed[$i][0]) {
array_splice($avShed, $i, 1);
$i--; //you may or may not need this
// continue 2; //<-- Uncomment if you only want 1st instance removed
}
}
}

I think this'll work. The $i-- is there in case you have 2 exact duplicates
back-to-back.
Looking back, I'm guessing there's a less cpu-intensive way to do this.

Regards,
Shawn
--
Shawn Wilson
shawn@glassgiant.com
http://www.glassgiant.com
Pedro Graca
Guest
 
Posts: n/a
#3: Jul 17 '05

re: array question


Stormkid wrote:[color=blue]
> Hi Group I'm trying to figure out a way that I can take two (two
> dimensional) arrays and avShed and shed, and subtract the matching elements
> in shed from avShed I've pasted the arrays blow from a print_r cmd any
> suggestions would be great. Thanks much Todd[/color]
(snip)

I'd change those arrays of arrays into arrays of strings and then apply
array_intersect() to them

something like this (UNTESTED):

<?php
$new1 = array();
foreach ($avShed as $arr) $new1[] = $arr[0] . '@@' . $arr[1];
// or is this $arr['dayOfWeek'] and $arr['timeInt'] ???

$new2 = array();
foreach ($shed as $arr) $new2[] = $arr[0] . '@@' . $arr[1];


$diff = array_intersect($new1, $new2);
?>
--
--= my mail box only accepts =--
--= Content-Type: text/plain =--
--= Size below 10001 bytes =--
Closed Thread