[thelist] single quotes and arrays
nadeem at nadeemh.com
Sun Apr 24 22:24:05 CDT 2016
I may have misunderstood what you intended (apologies if so) but this code:
title = 'daniel'
$_GET[ title ]
does not resolve to $_GET['daniel'].
Its usage would be like this:
$title = 'daniel';
$_GET['title'] = $title;
would print out "daniel".
echo $_GET['daniel'] would result in some kind of error because the key isn't set in the array.
(230) 5766 9169
From: thelist-bounces at lists.evolt.org [mailto:thelist-bounces at lists.evolt.org] On Behalf Of Volkan Özçelik
Sent: 24 April 2016 06:08
To: thelist at lists.evolt.org
Subject: Re: [thelist] single quotes and arrays
My guesstimate is:
In `$pageid = $_GET[pageid];` you are doing a direct assignment and hence the PHP interpreter can get clever enough to "catch" what you meant.
In ` ""<option value=\"$row['id']\">$row['title']</option>\n" ` however, it is string interpolation; so it’s an additional level of indirection, and PHP interpreter is not ready to infer what you meant and erring out.
As a best practice you should always be using quoted attributes as not using them may be mixed with a variable with the same name. (
title = 'daniel'
$_GET[ title ]
will resolve to $_GET['daniel'] which probably will be undefined.
Just my 2c.
Would love to hear other PHP experts’ ideas on that though.
On Sat, Apr 23, 2016 at 5:52 PM Garth Hagerman <hagerman at mcn.org> wrote:
> Hi everybody-
> Since The List is alive again (hooray!), here's a query.
> I've been making the same boo-boo over and over for years. I have a
> rote mechanical understanding of what to do about it, but I do not
> understand the conceptual background.
> In PHP, I pass info to another page using a form. The page receiving
> the info has a line like this:
> $pageid = $_GET[pageid];
> This works, so there doesn't seem to be anything wrong, so I do it
> over and over and over. But it logs something like this into the error_log:
> "PHP Notice: Use of undefined constant pageid - assumed 'pageid' ".
> Since this happens a lot, the error_log gets to be a very large file.
> So, I understand how to stop getting that notice: put single quotes
> around pageid.
> But why? pageid isn't a string, it's the name of an array element. If
> I do the same single quote thing with other arrays, something like:
> echo("<option value=\"$row['id']\">$row['title']</option>\n");
> it's a fatal error and the whole page explodes.
> I've tried to find a reasonable explanation online, but haven't found
> anything which makes the little "eureka!" light over my head light up.
> Thanks in advance
> * * * * * * * * * * * * * * * *
> my online portfolio
> * * Please support the community that supports you. * *
> For unsubscribe and other options, including the Tip Harvester and
> archives of thelist go to: http://lists.evolt.org Workers of the Web,
> evolt !
* * Please support the community that supports you. * * http://evolt.org/help_support_evolt/
For unsubscribe and other options, including the Tip Harvester and archives of thelist go to: http://lists.evolt.org Workers of the Web, evolt !
More information about the thelist