Bookmarks

Yahoo Gmail Google Facebook Delicious Twitter Reddit Stumpleupon Myspace Digg

Search queries

sqldatasource dal, wwwxxxenden, convert raid5 to raid 10 mdadm, apache force chunked, nrao wwwxxx, xxxxxdup, procmail change subject header, wwwXxx not20, Wwwxxx.doks sas, linux raid resync after reboot

Links

XODOX
Impressum

#1: Simple PHP question

Posted on 2008-04-24 13:00:33 by 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<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
help will be much appreciated.

Report this message

#2: Re: Simple PHP question

Posted on 2008-04-24 13:13:35 by luiheidsgoeroe

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 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<ImageInfo> 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

Report this message

#3: Re: Simple PHP question

Posted on 2008-04-24 13:18:45 by Hans-Peter Sauer

<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

Report this message

#4: Re: Simple PHP question

Posted on 2008-04-24 14:00:03 by Ronald Raygun

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 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?

Report this message

#5: Re: Simple PHP question

Posted on 2008-04-24 14:15:14 by luiheidsgoeroe

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 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
<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

Report this message

#6: Re: Simple PHP question

Posted on 2008-04-24 15:05:22 by Rob

On Apr 24, 1:15=A0pm, 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> =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<ImageInfo> 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
> <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 =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.

Report this message

#7: Re: Simple PHP question

Posted on 2008-04-24 17:33:37 by 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<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 help will be much appreciated.

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

Report this message