On 13 May 2004 12:59, Yivi wrote: > Hello everyone. > I am having a stupid problem with a couple of arrays, tried a > couple of > things but I am feeling disconcerted. > > The thing is, I thought it was possible to create arrays in a dynamic > fashion, as in: $newarray['newkey'] = "new_value"; > And the array would be incremented accordingly. > And afterwards, if I wanted to add a new key to the thing, just doing: > $newarray['anotherkey'] = "anothervalue"; would be enough. > Generally speaking I have been trying that and it was > working, but right > now I am having some trouble with this. > > I am parsing a kind of referrals log file, and as I get the values I > want to create a hash with all the values I get into a hash to use > later on. > > Each line of the log is processed in a while() loop, and after > extracting the values for $searchSource, $searchDomain and > $searchTerm I try to create the hash entries with these lines: > > $table["$searchSource"]["$searchDomain"]["$searchTerm"]["total > "]+=$row['order_total']; > $table["$searchSource"]["$searchDomain"]["$searchTerm"]["count"]++;
Your problem here is that you are using the += and ++ operators, which need to fetch the existing value of your array element before adding to or incrementing them. Of course, the *first* time you attempt to do this the array element doesn't exist yet, so PHP throws a notice for each of the subscripts; subsequent additions to or increments of the same elements will proceed without problem. > "total" is an amount that I want to aggregate for each $seachTerm, and > "count" an obvious counter with total hits per > $searchTerm/Domain/Source > combination. $table is an array which I create before > entering the loop > with: $table = array(); This is irrelevant and, strictly speaking, unnecessary. > The problem is that I keep getting this warnings and notices: > Notice: Undefined index: GGAW in > c:\www\deepswarm.co.uk\script\monthlytable.php on line 60 [...] > Using the "@" operator the scripts works perfectly, but I That's one of the obvious ways to suppress these notices. Others are to turn off E_NOTICE level messages for the duration, or use isset() on each access to decide whether to do a plain assignment or use an increment/addition. BTW, all those quotes are unnecessary and inefficient -- just write your array accesses like this: $table[$searchSource][$searchDomain][$searchTerm]["count"] Cheers! Mike --------------------------------------------------------------------- Mike Ford, Electronic Information Services Adviser, Learning Support Services, Learning & Information Services, JG125, James Graham Building, Leeds Metropolitan University, Beckett Park, LEEDS, LS6 3QS, United Kingdom Email: [EMAIL PROTECTED] Tel: +44 113 283 2600 extn 4730 Fax: +44 113 283 3211 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php