|
Posted by Rik on 08/06/06 20:23
Shelly wrote:
> "s a n j a y" <sanjay.debian@gmail.com> wrote in message
> news:NaCdnUAhAvWsg0vZnZ2dnUVZ_qydnZ2d@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
Navigation:
[Reply to this message]
|