single dimensional array questions

From: Date: Wed, 04 Aug 2004 14:29:48 +0000
Subject: single dimensional array questions
Groups: php.general 
Request: Send a blank email to php-general+get-192709@lists.php.net to get a copy of this message
Here is my snippet of code. It takes cardnum from the database, removes the duplicates for each individual date, and then counts how many discrete numbers there was. <!-- snippet of code starts here --> //database connect and selection here, now my sql statement: $sql = "select convert( varchar,eventime, 110) as date, cardnum from events, badge where eventtype=0 and devid=1 and events.cardnum=badge.id and badge.type = 1 and convert(varchar,eventime,110) between '$startdate' and '$enddate' group by events.eventime, events.cardnum order by convert(varchar,eventime,110), cardnum"; $query = mssql_query($sql); while ($row = mssql_fetch_assoc($query)) { $array[$row['date']][] = $row['cardnum']; } $i = 0; $j = 0; foreach ( $array as $key => $value) { echo 'date: '. $key . ', count: ' . count(array_unique($value)); echo "<br>"; $i += count(array_unique($value)); $j++; } $query = mssql_query($sql); while ($row = mssql_fetch_assoc($query)) { $array[$row['date']][] = $row['cardnum']; } $i = 0; $j = 0; foreach ( $array as $key => $value) { echo 'date: '. $key . ', count: ' . count(array_unique($value)); echo "<br>"; $i += count(array_unique($value)); $j++; } echo "total = $i<br>"; echo "average = ".round(($i/$j),1); <!-- end of code --> And now my question. What I need to do is create a single dimensional array that contains each number that count(array_unique($value)) is counting. how would I do this? I can't use the SQL query because I have to remove duplicate cardnums for each date. I was thinking of doing: $patrons = array(); //inside of the foreach have this: $patrons[] = array_unique($value); but that doesn't seem to work. because when I print_r($patrons) its creating an array of arrays of an array. here is from july 1 to july 7th. date: 07-01-2004, count: 50 date: 07-02-2004, count: 43 date: 07-03-2004, count: 33 date: 07-06-2004, count: 35 date: 07-07-2004, count: 51 Array ( [0] => Array ( [0] => 123 [1] => 204 [2] => 277 [4] => 343 [6] => 450 [7] => 552 [8] => 637 [9] => 828 [11] => 829 [12] => 1007 [13] => 1075 [14] => 1363 [15] => 1455 [17] => 1539 [18] => 1736 [19] => 1928 [23] => 1929 [25] => 2044 [26] => 2221 [29] => 2222 [34] => 2961 [36] => 2969 [37] => 3122 [39] => 3273 [42] => 3274 [46] => 3286 [47] => 3288 [51] => 3294 [52] => 3322 [53] => 3325 [54] => 3326 [56] => 3327 [57] => 3328 [59] => 3329 [60] => 3330 [61] => 3332 [62] => 3333 [63] => 3334 [64] => 3335 [65] => 3336 [66] => 3337 [68] => 3338 [69] => 3339 [70] => 3340 [71] => 3341 [72] => 3342 [73] => 3343 [74] => 3344 [76] => 3345 [77] => 3346 ) [1] => Array ( [0] => 114 [1] => 123 [2] => 277 [3] => 369 [5] => 637 [6] => 744 [7] => 829 [8] => 1264 [10] => 1702 [11] => 1738 [13] => 1911 [15] => 1928 [20] => 2221 [24] => 2222 [29] => 2593 [30] => 2961 [31] => 2969 [34] => 3037 [35] => 3273 [38] => 3274 [43] => 3322 [45] => 3336 [46] => 3338 [48] => 3347 [50] => 3348 [53] => 3349 [55] => 3350 [56] => 3351 [57] => 3352 [59] => 3353 [61] => 3354 [62] => 3355 [63] => 3356 [66] => 3357 [68] => 3358 [69] => 3359 [70] => 3360 [71] => 3361 [72] => 3362 [73] => 3363 [75] => 3364 [76] => 3365 [77] => 3366 ) [2] => Array ( [0] => 87 [2] => 344 [3] => 355 [4] => 362 [5] => 637 [7] => 744 [8] => 825 [9] => 826 [11] => 895 [13] => 1478 [15] => 1654 [17] => 2429 [18] => 2654 [20] => 2756 [21] => 2969 [22] => 3124 [23] => 3166 [24] => 3273 [27] => 3274 [29] => 3294 [31] => 3351 [32] => 3352 [34] => 3361 [36] => 3367 [37] => 3368 [39] => 3369 [40] => 3370 [42] => 3372 [43] => 3373 [44] => 3374 [45] => 3375 [46] => 3376 [47] => 3378 ) [3] => Array ( [0] => 314 [4] => 343 [7] => 637 [8] => 825 [9] => 826 [10] => 829 [11] => 1736 [13] => 1844 [15] => 2084 [17] => 2967 [18] => 2990 [19] => 2991 [21] => 3037 [23] => 3078 [24] => 3106 [25] => 3107 [28] => 3179 [31] => 3379 [34] => 3380 [36] => 3381 [38] => 3382 [40] => 3383 [41] => 3384 [42] => 3385 [44] => 3386 [45] => 3387 [46] => 3388 [47] => 3389 [48] => 3390 [49] => 3391 [51] => 3392 [53] => 3393 [54] => 3394 [55] => 3395 [56] => 3396 ) [4] => Array ( [0] => 63 [3] => 203 [4] => 286 [5] => 637 [7] => 828 [9] => 829 [10] => 1066 [12] => 1262 [13] => 1702 [14] => 1736 [16] => 1738 [17] => 1844 [19] => 1926 [20] => 2654 [23] => 2946 [24] => 2990 [26] => 2991 [29] => 3179 [31] => 3220 [33] => 3286 [35] => 3316 [38] => 3334 [39] => 3361 [41] => 3383 [43] => 3384 [44] => 3385 [45] => 3390 [46] => 3391 [48] => 3398 [49] => 3399 [50] => 3400 [53] => 3401 [55] => 3402 [59] => 3403 [63] => 3404 [65] => 3405 [71] => 3406 [72] => 3407 [73] => 3408 [74] => 3409 [75] => 3410 [76] => 3411 [77] => 3412 [79] => 3413 [81] => 3414 [82] => 3415 [83] => 3416 [84] => 3418 [85] => 3419 [86] => 3420 [87] => 3421 ) ) total = 212 average = 42.4 note that there is no july 4th and 5th because we were closed those days. what I want to do is is say after I add the first array of dates into $patrons[], say if its 10 cardnums, i'll have $patrons[0] through $patrons[9], and when I add the next day and it was 8 cardnums, it would be $patrons[10] through $patrons[17]. but instead its creating $patrons[0][0] through patrons[0][9] and next day is $patrons[1][0] through $patrons[1][7]. atleast thats what I think is happening. so how do I get it to just put all of the card nums that count(array_unique($value)) is counting into a single dimensional array? thanks

« previous php.general (#192709) next »