You are here: Re: array bugs? « PHP Programming Language « IT news, forums, messages
Re: array bugs?

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]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация