Simple PHP question

Simple PHP question

am 24.04.2008 13:00:33 von Ronald Raygun

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 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
help will be much appreciated.

Re: Simple PHP question

am 24.04.2008 13:13:35 von luiheidsgoeroe

On Thu, 24 Apr 2008 13:00:33 +0200, Ronald Raygun =

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 in=
to =

> 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 theArray ;
>
>
> static const ImageInfo& getRandomImageInfo()
> {
> //generate a random number less than number of items in vector
> size_t index =3D random_index(theArray.size());
> return theArray[index];
> }
>
> I need to know how to translate this into PHP. I know PHP does not hav=
e =

> the equivalent of the STL, so I will have to use use arrays instead. A=
ny =

> help will be much appreciated.

With arrays it sure is simple:

$images =3D array(
'possible_foo_identifier' =3D> array('path' =3D> 'foo.jpg','name' =3D> =
'foo', =

'descr' =3D> 'foo descr.'),
'possible_bar_identifier' =3D> array('path' =3D> 'bar.jpg','name' =3D> =
'bar', =

'descr' =3D> 'bar descr.'));
$chosen =3D $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 =3D array(
array('path' =3D> 'foo.jpg','name' =3D> 'foo', 'descr' =3D> 'foo descr.=
'),
array('path' =3D> 'bar.jpg','name' =3D> 'bar', 'descr' =3D> 'bar descr.=
'));
$chosen =3D $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/spl/classArrayObject.html
-- =

Rik Wasmus

Re: Simple PHP question

am 24.04.2008 13:18:45 von Hans-Peter Sauer




<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

Re: Simple PHP question

am 24.04.2008 14:00:03 von Ronald Raygun

Rik Wasmus wrote:

> On Thu, 24 Apr 2008 13:00:33 +0200, Ronald Raygun
> 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 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 help 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?

Re: Simple PHP question

am 24.04.2008 14:15:14 von luiheidsgoeroe

Ronald Raygun wrote:
> Rik Wasmus wrote:
>
>> On Thu, 24 Apr 2008 13:00:33 +0200, Ronald Raygun
>> 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 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 help 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
. 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

Re: Simple PHP question

am 24.04.2008 15:05:22 von Rob

On Apr 24, 1:15=A0pm, Rik Wasmus wrote:
> Ronald Raygun wrote:
> > Rik Wasmus wrote:
>
> >> On Thu, 24 Apr 2008 13:00:33 +0200, Ronald Raygun
> >> =A0wrote:
>
> >>> 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 =A0the array, and then be able to randomly select an item from th=
e
> >>> array =A0and 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:
> >>> =A0 =A0 =A0ImageInfo(const std::string& path, const std::string& name,=

> >>> const =A0std::string& descr);
> >>> =A0 =A0 =A0ImageInfo(const ImageInfo&);
> >>> =A0 =A0 =A0~ImageInfo();
>
> >>> =A0 =A0 =A0std::string PathName() const ;
> >>> =A0 =A0 =A0std::string Name() const ;
> >>> =A0 =A0 =A0std::string Description() const ;
>
> >>> private:
> >>> =A0 =A0std::string m_path, m_name, m_descr;
> >>> }
>
> >>> static std::vector theArray ;
>
> >>> static const ImageInfo& getRandomImageInfo()
> >>> {
> >>> =A0 =A0 =A0//generate a random number less than number of items in vec=
tor
> >>> =A0 =A0 =A0size_t index =3D random_index(theArray.size());
> >>> =A0 =A0 =A0return theArray[index];
> >>> }
>
> >>> I need to know how to translate this into PHP. I know PHP does not
> >>> have =A0the equivalent of the STL, so I will have to use use arrays
> >>> instead. Any =A0help will be much appreciated.
>
> >> With arrays it sure is simple:
>
> >> $images =3D array(
> >> =A0 =A0 'possible_foo_identifier' =3D> array('path' =3D> 'foo.jpg','nam=
e' =3D>
> >> 'foo', =A0'descr' =3D> 'foo descr.'),
> >> =A0 =A0 'possible_bar_identifier' =3D> array('path' =3D> 'bar.jpg','nam=
e' =3D>
> >> 'bar', =A0'descr' =3D> 'bar descr.'));
> >> $chosen =3D $images[array_rand($images)];
> >> var_dump($chosen);
>
> >> If you don't want the identifiers, and just have a 0-indexed array,
> >> you =A0could also use:
>
> >> $images =3D array(
> >> =A0 =A0 array('path' =3D> 'foo.jpg','name' =3D> 'foo', 'descr' =3D> 'fo=
o descr.'),
> >> =A0 =A0 array('path' =3D> 'bar.jpg','name' =3D> 'bar', 'descr' =3D> 'ba=
r descr.'));
> >> $chosen =3D $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
> . 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 =3D> $value) {
echo "The value of $key is $value \n";
$$key =3D $value; // Equivilent to saying $Pathname =3D "xxxx",
$Description =3D "yyyyy", etc, etc
}

Rob.

Re: Simple PHP question

am 24.04.2008 17:33:37 von Pat Willener

> 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 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 help will be much appreciated.

--
How to Post to more than one group:
http://en.wikipedia.org/wiki/Crossposting