|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
I want to be able to randomly select the following from an array:
1). An image 2). A piece of text (name of tge image) 3). A piece of text (description of the image) I want to be able to build a static array with the values hardcoded into the array, and then be able to randomly select an item from the array and retrieve the image, name and description. I am new to PHP, but have been programming C/C++ for over 10 years. In C++ it would look something like this: class ImageInfo { public: ImageInfo(const std::string& path, const std::string& name, const std::string& descr); ImageInfo(const ImageInfo&); ~ImageInfo(); std::string PathName() const ; std::string Name() const ; std::string Description() const ; private: std::string m_path, m_name, m_descr; } static std::vector<ImageInfo> theArray ; static const ImageInfo& getRandomImageInfo() { //generate a random number less than number of items in vector size_t index = random_index(theArray.size()); return theArray[index]; } I need to know how to translate this into PHP. I know PHP does not have the equivalent of the STL, so I will have to use use arrays instead. Any will be much appreciated. |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
On Thu, 24 Apr 2008 13:00:33 +0200, Ronald Raygun <invalid@domain.com>
wrote: > I want to be able to randomly select the following from an array: > > 1). An image > 2). A piece of text (name of tge image) > 3). A piece of text (description of the image) > > > I want to be able to build a static array with the values hardcoded into > the array, and then be able to randomly select an item from the array > and retrieve the image, name and description. > > I am new to PHP, but have been programming C/C++ for over 10 years. > > In C++ it would look something like this: > > class ImageInfo > { > public: > ImageInfo(const std::string& path, const std::string& name, const > std::string& descr); > ImageInfo(const ImageInfo&); > ~ImageInfo(); > > std::string PathName() const ; > std::string Name() const ; > std::string Description() const ; > > private: > std::string m_path, m_name, m_descr; > } > > static std::vector<ImageInfo> theArray ; > > > static const ImageInfo& getRandomImageInfo() > { > //generate a random number less than number of items in vector > size_t index = random_index(theArray.size()); > return theArray[index]; > } > > I need to know how to translate this into PHP. I know PHP does not have > the equivalent of the STL, so I will have to use use arrays instead. Any > will be much appreciated. With arrays it sure is simple: $images = array( 'possible_foo_identifier' => array('path' => 'foo.jpg','name' => 'foo', 'descr' => 'foo descr.'), 'possible_bar_identifier' => array('path' => 'bar.jpg','name' => 'bar', 'descr' => 'bar descr.')); $chosen = $images[array_rand($images)]; var_dump($chosen); If you don't want the identifiers, and just have a 0-indexed array, you could also use: $images = array( array('path' => 'foo.jpg','name' => 'foo', 'descr' => 'foo descr.'), array('path' => 'bar.jpg','name' => 'bar', 'descr' => 'bar descr.')); $chosen = $images[rand(0,count($images)-1)]; var_dump($chosen); If you want to use objects, look into SPL: http://www.php.net/~helly/php/ext/sp...rayObject.html -- Rik Wasmus |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
<comp.lang.php>
<Ronald Raygun> <Thu, 24 Apr 2008 12:00:33 +0100> <5OydnZRZAJPm9Y3VnZ2dnUVZ8qGdnZ2d@bt.com> > 1). An image > 2). A piece of text (name of tge image) > 3). A piece of text (description of the image) > > > I want to be able to build a static array with the values hardcoded into > the array, and then be able to randomly select an item from the array > and retrieve the image, name and description. > Why not just select one item at random - and read in the details of that one item . -- www.krustov.co.uk |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
Rik Wasmus wrote: > On Thu, 24 Apr 2008 13:00:33 +0200, Ronald Raygun <invalid@domain.com> > wrote: > >> I want to be able to randomly select the following from an array: >> >> 1). An image >> 2). A piece of text (name of tge image) >> 3). A piece of text (description of the image) >> >> >> I want to be able to build a static array with the values hardcoded >> into the array, and then be able to randomly select an item from the >> array and retrieve the image, name and description. >> >> I am new to PHP, but have been programming C/C++ for over 10 years. >> >> In C++ it would look something like this: >> >> class ImageInfo >> { >> public: >> ImageInfo(const std::string& path, const std::string& name, >> const std::string& descr); >> ImageInfo(const ImageInfo&); >> ~ImageInfo(); >> >> std::string PathName() const ; >> std::string Name() const ; >> std::string Description() const ; >> >> private: >> std::string m_path, m_name, m_descr; >> } >> >> static std::vector<ImageInfo> theArray ; >> >> >> static const ImageInfo& getRandomImageInfo() >> { >> //generate a random number less than number of items in vector >> size_t index = random_index(theArray.size()); >> return theArray[index]; >> } >> >> I need to know how to translate this into PHP. I know PHP does not >> have the equivalent of the STL, so I will have to use use arrays >> instead. Any will be much appreciated. > > > With arrays it sure is simple: > > $images = array( > 'possible_foo_identifier' => array('path' => 'foo.jpg','name' => > 'foo', 'descr' => 'foo descr.'), > 'possible_bar_identifier' => array('path' => 'bar.jpg','name' => > 'bar', 'descr' => 'bar descr.')); > $chosen = $images[array_rand($images)]; > var_dump($chosen); > > If you don't want the identifiers, and just have a 0-indexed array, you > could also use: > > $images = array( > array('path' => 'foo.jpg','name' => 'foo', 'descr' => 'foo descr.'), > array('path' => 'bar.jpg','name' => 'bar', 'descr' => 'bar descr.')); > $chosen = $images[rand(0,count($images)-1)]; > var_dump($chosen); > > Thanks Rik, thissi exactly what I was looking for. One last question though - now that I have the randomly selected item, how do I retrieve the particular 'fields' in the array - for example, how do I retrieve the path and description from the chosen item? |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
Ronald Raygun wrote:
> Rik Wasmus wrote: > >> On Thu, 24 Apr 2008 13:00:33 +0200, Ronald Raygun >> <invalid@domain.com> wrote: >> >>> I want to be able to randomly select the following from an array: >>> >>> 1). An image >>> 2). A piece of text (name of tge image) >>> 3). A piece of text (description of the image) >>> >>> >>> I want to be able to build a static array with the values hardcoded >>> into the array, and then be able to randomly select an item from the >>> array and retrieve the image, name and description. >>> >>> I am new to PHP, but have been programming C/C++ for over 10 years. >>> >>> In C++ it would look something like this: >>> >>> class ImageInfo >>> { >>> public: >>> ImageInfo(const std::string& path, const std::string& name, >>> const std::string& descr); >>> ImageInfo(const ImageInfo&); >>> ~ImageInfo(); >>> >>> std::string PathName() const ; >>> std::string Name() const ; >>> std::string Description() const ; >>> >>> private: >>> std::string m_path, m_name, m_descr; >>> } >>> >>> static std::vector<ImageInfo> theArray ; >>> >>> >>> static const ImageInfo& getRandomImageInfo() >>> { >>> //generate a random number less than number of items in vector >>> size_t index = random_index(theArray.size()); >>> return theArray[index]; >>> } >>> >>> I need to know how to translate this into PHP. I know PHP does not >>> have the equivalent of the STL, so I will have to use use arrays >>> instead. Any will be much appreciated. >> >> >> With arrays it sure is simple: >> >> $images = array( >> 'possible_foo_identifier' => array('path' => 'foo.jpg','name' => >> 'foo', 'descr' => 'foo descr.'), >> 'possible_bar_identifier' => array('path' => 'bar.jpg','name' => >> 'bar', 'descr' => 'bar descr.')); >> $chosen = $images[array_rand($images)]; >> var_dump($chosen); >> >> If you don't want the identifiers, and just have a 0-indexed array, >> you could also use: >> >> $images = array( >> array('path' => 'foo.jpg','name' => 'foo', 'descr' => 'foo descr.'), >> array('path' => 'bar.jpg','name' => 'bar', 'descr' => 'bar descr.')); >> $chosen = $images[rand(0,count($images)-1)]; >> var_dump($chosen); >> >> > > Thanks Rik, thissi exactly what I was looking for. One last question > though - now that I have the randomly selected item, how do I retrieve > the particular 'fields' in the array - for example, how do I retrieve > the path and description from the chosen item? By $array['name of index'], so in this case for instance: echo $chosen['path']; For more array information/usage, see <http://nl2.php.net/manual/en/language.types.array.php>. The PHP manual is quite good (don't forget the user contributed notes), be sure to refer to it often when familiarizing yourself with PHP. -- Rik Wasmus |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
On Apr 24, 1:15pm, Rik Wasmus <luiheidsgoe...@hotmail.com> wrote:
> Ronald Raygun wrote: > > Rik Wasmus wrote: > > >> On Thu, 24 Apr 2008 13:00:33 +0200, Ronald Raygun > >> <inva...@domain.com> wrote: > > >>> I want to be able to randomly select the following from an array: > > >>> 1). An image > >>> 2). A piece of text (name of tge image) > >>> 3). A piece of text (description of the image) > > >>> I want to be able to build a static array with the values hardcoded > >>> into the array, and then be able to randomly select an item from the > >>> array and retrieve the image, name and description. > > >>> I am new to PHP, but have been programming C/C++ for over 10 years. > > >>> In C++ it would look something like this: > > >>> class ImageInfo > >>> { > >>> public: > >>> ImageInfo(const std::string& path, const std::string& name, > >>> const std::string& descr); > >>> ImageInfo(const ImageInfo&); > >>> ~ImageInfo(); > > >>> std::string PathName() const ; > >>> std::string Name() const ; > >>> std::string Description() const ; > > >>> private: > >>> std::string m_path, m_name, m_descr; > >>> } > > >>> static std::vector<ImageInfo> theArray ; > > >>> static const ImageInfo& getRandomImageInfo() > >>> { > >>> //generate a random number less than number of items in vector > >>> size_t index = random_index(theArray.size()); > >>> return theArray[index]; > >>> } > > >>> I need to know how to translate this into PHP. I know PHP does not > >>> have the equivalent of the STL, so I will have to use use arrays > >>> instead. Any will be much appreciated. > > >> With arrays it sure is simple: > > >> $images = array( > >> 'possible_foo_identifier' => array('path' => 'foo.jpg','name' => > >> 'foo', 'descr' => 'foo descr.'), > >> 'possible_bar_identifier' => array('path' => 'bar.jpg','name' => > >> 'bar', 'descr' => 'bar descr.')); > >> $chosen = $images[array_rand($images)]; > >> var_dump($chosen); > > >> If you don't want the identifiers, and just have a 0-indexed array, > >> you could also use: > > >> $images = array( > >> array('path' => 'foo.jpg','name' => 'foo', 'descr' => 'foo descr.'), > >> array('path' => 'bar.jpg','name' => 'bar', 'descr' => 'bar descr.')); > >> $chosen = $images[rand(0,count($images)-1)]; > >> var_dump($chosen); > > > Thanks Rik, thissi exactly what I was looking for. One last question > > though - now that I have the randomly selected item, how do I retrieve > > the particular 'fields' in the array - for example, how do I retrieve > > the path and description from the chosen item? > > By $array['name of index'], so in this case for instance: > echo $chosen['path']; > > For more array information/usage, see > <http://nl2.php.net/manual/en/language.types.array.php>. The PHP manual > is quite good (don't forget the user contributed notes), be sure to > refer to it often when familiarizing yourself with PHP. > -- > Rik Wasmus- Hide quoted text - > > - Show quoted text - Ronald, just to add an extra bit to Rik's response, PHP has a useful array walking function called foreach(), which you could use like this (untested) :- foreach ($list_of_objects[$selected_index] as $key => $value) { echo "The value of $key is $value \n"; $$key = $value; // Equivilent to saying $Pathname = "xxxx", $Description = "yyyyy", etc, etc } Rob. |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
> I want to be able to randomly select the following from an array:
> > 1). An image > 2). A piece of text (name of tge image) > 3). A piece of text (description of the image) > > > I want to be able to build a static array with the values hardcoded > into the array, and then be able to randomly select an item from the > array and retrieve the image, name and description. > > I am new to PHP, but have been programming C/C++ for over 10 years. > > In C++ it would look something like this: > > class ImageInfo > { > public: > ImageInfo(const std::string& path, const std::string& name, const > std::string& descr); > ImageInfo(const ImageInfo&); > ~ImageInfo(); > > std::string PathName() const ; > std::string Name() const ; > std::string Description() const ; > > private: > std::string m_path, m_name, m_descr; > } > > static std::vector<ImageInfo> theArray ; > > > static const ImageInfo& getRandomImageInfo() > { > //generate a random number less than number of items in vector > size_t index = random_index(theArray.size()); > return theArray[index]; > } > > I need to know how to translate this into PHP. I know PHP does not > have the equivalent of the STL, so I will have to use use arrays > instead. Any will be much appreciated. -- How to Post to more than one group: http://en.wikipedia.org/wiki/Crossposting |
|
![]() |
| Outils de la discussion | |
|
|