Shelly wrote:
"s a n j a y" <sa***********@gmail.comwrote in message
news:Na******************************@comcast.com. ..
>7h@ch wrote:
>>Sorry if I sounds like a noob (because I am one, here). I ran across
this earlier, and it kept bugging me. I guess someone here know a
good answer.
To summerize, I was using array within a class. After some
manipulation, the value of the array's element that I needed wasn't
"echoed" right.
For instance,
class FootballClub
{
public $name;
public $stadium = "junkyard";
public $roster = array("gk"=>"clown", "st"=>"fool");
public $coach;
}
$myclub = new FootballClub();
$myclub->name = "Liverpool";
if ($myclub->name == "Liverpool")
{
$myclub->stadium = "Anfield";
$myclub->coach = "Rafa Benitez";
$myclub->roster["gk"] = "Pepe Reina";
$myclub->roster["st"] = "Robbie Fowler";
}
$myplayer = $myclub->roster[gk];
echo "your team plays at: $myclub->stadium<br>";
echo "your goal keeper is: $myclub->roster[gk]<br>");
---------
Problem:
As is, the 2nd line output is: "your goal keeper is: Array[gk]"
thought $myplayer gets the right value.
Any plausible explaination, please?
Thanks.
Although not strictly necessary in php, always put your variables
outside of quotes. This came to me easily as I was developing in c
and C++ before I moved on to PHP.
Hmm. I looke at someone else's answer of putting braces in. I
thought to myself, "Great, I just learned something by reading this
newgroup. Store it away". When I saw your response I thought to
myself "Why hadn't I come across this problem before, myself?".
Well, your answer showed me why. I would have written it as:
echo "your goal keeper is:" . $myclub->roster['gk'] . "<br>";
and never have had that difficulty. My background in C and java
developed that same habit in me.
It could be done like that, for sure (allthough I'd use single quotes for
text without variables & newlines). When outputting HTML tags however, it
can become a complete quote-fest, that I'd rather avoid to improve
legibility. Heredoc & curly often come to the rescue, allthough certainly
for numberformatting, but also for strings, (s/v)printf() is certainly an
outcome.
Consider:
array product{
[id] =>.....
[name] =>...
[decription] =...
[image_src] =...
.....
}
Concating way:
echo '
<h2>'.$product['id'].':'.$product['name'].'</h2>
<p>
<a href="./products/?id='.$product['id'].'"><img
src="'.$product['image_src'].'" /></a>
'.$product['decscription'].'
let\'s say way have to use singel quote\'s here... escaping?
Read more about <a
href="./products/?id='.$product['id'].'">'.$product['name'].'</a>
</p>';
Double quotes, curly:
echo "
<h2>{$product['id']}:{$product['name']}</h2>
<p>
<a href=\"./products/?id={$product['id']}\"><img
src=\"{$product['image_src']}\" /></a>
{$product['decscription']}
let's say way have to use singel quote's here... escaping?
Read more about <a
href=\"./products/?id={$product['id']}\">{$product['name']}</a>
</p>';
Heredoc, curly
echo <<<HTML
<h2>{$product['id']}:{$product['name']}</h2>
<p>
<a href="./products/?id={$product['id']}"><img
src="{$product['image_src']}" /></a>
{$product['decscription']}
let's say way have to use singel quote's here... escaping?
Read more about <a
href="./products/?id={$product['id']}">{$product['name']}</a>
</p>
HTML;
Printf possibility:
vprintf(<<<HTML
<h2>%1$03d:%2$s</h2>
<p>
<a href="./products/?id=%1$d"><img src="%4$s" /></a>
%3$s
let's say way have to use single quote's here... escaping?
Read more about <a href="./products/?id=%1$d">%2$s</a>
</p>
HTML;
, $products);
The latter one might come in handywhen outputting a list from an array
(allthough the code isn't really charming):
$list = array('page 1','page 2','page 3'....
vprintf(str_repeat("\n<li>%s</li>", count($list)),$list);
It's all about legibility, what you're actually doing, wether it has to be
easily maintained and wether it's a repeating output.
Grtz,
--
Rik Wasmus