RE: [PHP] How do I make an array like this?

From: Date: Wed, 12 Jul 2000 05:43:32 +0000
Subject: RE: [PHP] How do I make an array like this?
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-6067@lists.php.net to get a copy of this message
Ok, I went back and read your original problem. You are making things much more complex than they really are. This will do the trick: $fp = fopen('WallCost.csv','r'); while(!feof($fp)) { $arr = fgetcsv($fp,256); $WallCab[$arr[0]] = array(1=>$arr[1],2=>$arr[2]); } fclose($fp); That's all. It is fast, doesn't eat up a bunch of memory by loading the entire file into RAM, and doesn't need to split up each line. -Rasmus On Tue, 11 Jul 2000, Ted Knudson wrote: > Thanks > > That worked up to a point but I still do not know how to get the result I > want. > This is the code I wrote from your description but I need some help at the > end of the code. > > <?php > $Lines = file("WallCost.csv"); > > for ($i =0; $i < count($Lines); $i++) > { > // print $Lines[$i]."<br>"; //Works OK! > List($key, $cost, $thickness) = split(",", $Lines[$i]); > Print $key." ".$cost." ".$thickness."<br>"; //Works OK! > $WallCab[$Key] = array($cost, $thickness); > } > $Key = "Mel341"; > //Print "<br>A ".$WallCab[$Key]."<br>"; //Does not work > Print "<br>B ".$WallCab[$Key][$cost]."<br>"; //Does not work > //What I want is 3.65 > ?> > > Ted Knudson > http://www.automatedcabinets.com > http://www.pulsarusa.com > > > -----Original Message----- > > From: shui@arlut.utexas.edu [mailto:shui@arlut.utexas.edu] > > Sent: Tuesday, July 11, 2000 9:41 AM > > To: tedk@cyberlink.com > > Subject: Re: [PHP] How do I make an array like this? > > > > > > This is how I understand your question: you have a file (WallCost.csv) > > that has a key and two values. You want the key to be a key in an > > associative array (a hash) and the value to be a two-element array > > containing the two values for the key. That is to say: > > > > $wallCab ["Mel140"] = array (0.85, 0.25); > > $wallCab ["Mel120"] = array (1.05, 0.5); > > etc.... > > > > If this is the case, then I would write some code like this: > > > > //---------------------------------------------------------- > > // This algorithm assumes there is no whitespace at the beginning > > // of each line. If there is, it is rather simple to eliminate > > // whitespaces. > > > > > > // Assigns each line of the file to an element of the $lines array. > > > > $lines = file ("WallCost.csv"); > > > > > > // Iterate on each line of the file > > for ($i = 0; $i < count ($lines); $i++) > > { > > list ($key, $val1, $val2) = split (",", $lines [$i]); // separate > > key and values > > $wallCab [$key] = array ($val1, $val2); // build > > $wallCab > > } > > > > //---------------------------------------------------------- > > > > And that's it. I won't guarantee that this will actually work, but it > > should at least give you an idea of where to go if it doesn't. And of > > course, if it does work, great! :o) > > > > I hope this helps! > > Stephen. > > > > > > > > > > Ted Knudson wrote: > > > > > > How do I make an array like this? > > > > > > Data File WallCost.csv > > > Mel140,0.85,0.25 > > > Mel120,1.05,0.5 > > > Mel580,1.09,0.625 > > > Mel340,1.13,0.75 > > > Mel141,3.37,0.25 > > > Mel121,3.57,0.5 > > > Mel581,3.61,0.625 > > > Mel341,3.65,0.75 > > > > > > What I have and it works. > > > > > > while ($data = fgetcsv($fp,10000)) //Turns the file > > into an array by > > > looping... > > > > > > $num = count($data); > > > //The array... > > > $wallCab[$row] = array(trim($data[0]), > > trim($data[1]), trim($data[2])); > > > Print($wallCab[$row][0]." ".$wallCab[$row][1]." > > > ".$wallCab[$row][2]."<br>\n"); > > > $row++; //Counter > > > } > > > I get $wallCab[1][0]="Mel140" $wallCab[1][1]=.85 > > $wallCab[1][2]= .25 > > > Just what it is suppose to do. > > > > > > What I want... > > > $row="Mel140"; > > > $wallCab[$row][1]= .85 and $wallCab[$row][2]= .52 > > > > > > Thanks > > > > > > Ted Knudson > > > http://www.automatedcabinets.com > > > http://www.pulsarusa.com > > > > -- > > Stephen Hui, ARL:UT, Austin, Texas > > > > Computer Terms: Programmer - A red-eyed, mumbling mammal > > capable of conversing with inanimate objects. > > > > >

« previous php.general (#6067) next »