FAQ
Hello!

I wonder why I cannot assign arrays to constants.
According to the PHP manual:
"only scalar and null values are allowed. Scalar values are integer, float,
string or boolean values."

What is the mechanism behind this?
What's the explanation?

--

Common sense is not so common - Voltaire
http://tweak-it.tk/ - Personal portfolio and web-log - Barbu Paul - Gh.
Visit My GitHub profile to see my open-source projects - https://github.com/paullik

Search Discussions

  • Paul Dragoonis at Dec 19, 2011 at 8:24 pm
    Barbu,

    This is how constants work in all viable languages such as C/++.

    They are not 'variables of data', they contain scalar values so that
    you can have a maintainable source for your value to refer to later.

    http://msdn.microsoft.com/en-us/library/357syhfh(v=vs.80).aspx

    I believe constants come from the philosophy of 'enums' in C.

    Just google some more on it.

    Regards,
    - Paul.

    On Mon, Dec 19, 2011 at 8:20 PM, Barbu Paul Gh. wrote:
    Hello!

    I wonder why I cannot assign arrays to constants.
    According to the PHP manual:
    "only scalar and null values are allowed. Scalar values are integer, float,
    string or boolean values."

    What is the mechanism behind this?
    What's the explanation?

    --

    Common sense is not so common - Voltaire
    http://tweak-it.tk/ - Personal portfolio and web-log - Barbu Paul - Gh.
    Visit My GitHub profile to see my open-source projects -
    https://github.com/paullik

    --
    PHP Internals - PHP Runtime Development Mailing List
    To unsubscribe, visit: http://www.php.net/unsub.php
  • Ángel González at Dec 19, 2011 at 8:43 pm

    On 19/12/11 21:23, Paul Dragoonis wrote:
    Barbu,

    This is how constants work in all viable languages such as C/++.
    I disagree. In C you can have:
    const data foo[] = { { "Data1", 2 }, { "Data2", 78 } };

    It's not unusual in php to have a complex structure that won't change
    in a variable. It should be an array, but as array is not allowed as
    content,
    you need to leave it as a static variable that you won't never change.
  • Paul Dragoonis at Dec 19, 2011 at 8:50 pm

    2011/12/19 Ángel González <[email protected]>:
    On 19/12/11 21:23, Paul Dragoonis wrote:
    Barbu,

    This is how constants work in all viable languages such as C/++.
    I disagree. In C you can have:
    const data foo[] = { { "Data1", 2 }, { "Data2", 78 } };
    Agreed, i was more thinking of #define (not const), when setting up
    values such as 'MAX_LEN', being a typical use case for PHP.
    It's not unusual in php to have a complex structure that won't change
    in a variable. It should be an array, but as array is not allowed as
    content,
    you need to leave it as a static variable that you won't never change.
  • Daniel Convissor at Dec 20, 2011 at 12:43 am

    Hi Barbu:

    I wonder why I cannot assign arrays to constants.
    Do keep in mind that you can serialize() the array before storing it in
    a constant. Then use unserialize(CONSTANT) when you need the data.

    --Dan

    --
    T H E A N A L Y S I S A N D S O L U T I O N S C O M P A N Y
    data intensive web and database programming
    http://www.AnalysisAndSolutions.com/
    4015 7th Ave #4, Brooklyn NY 11232 v: 718-854-0335 f: 718-854-0409
  • Tom Boutell at Dec 20, 2011 at 1:02 am
    This must be some strange definition of "constant" I do not understand, then (:

    On Mon, Dec 19, 2011 at 7:43 PM, Daniel Convissor
    wrote:
    Hi Barbu:
    I wonder why I cannot assign arrays to constants.
    Do keep in mind that you can serialize() the array before storing it in
    a constant.  Then use unserialize(CONSTANT) when you need the data.

    --Dan

    --
    T H E   A N A L Y S I S   A N D   S O L U T I O N S   C O M P A N Y
    data intensive web and database programming
    http://www.AnalysisAndSolutions.com/
    4015 7th Ave #4, Brooklyn NY 11232  v: 718-854-0335 f: 718-854-0409

    --
    PHP Internals - PHP Runtime Development Mailing List
    To unsubscribe, visit: http://www.php.net/unsub.php


    --
    Tom Boutell
    P'unk Avenue
    215 755 1330
    punkave.com
    window.punkave.com
  • Qiang Guo at Dec 20, 2011 at 2:00 am
    Yes, I am wondering too. For mechanism you can refer to the source code,
    and can someone explain why we cannot have constant arrays ?

    Qiang
  • Jpauli at Dec 20, 2011 at 4:38 pm
    I guess constant array would mean that all the variables inside the array
    dimensions should not change.
    Just saying that, is a nonsense.

    If a constant could be an array, then that array could not contain
    variables, if not it wouldn't be constant any more as a change to one
    variable inside it would change its own meaning value.

    Julien.P
    On Tue, Dec 20, 2011 at 1:28 AM, Qiang Guo wrote:


    Yes, I am wondering too. For mechanism you can refer to the source code,
    and can someone explain why we cannot have constant arrays ?

    Qiang


    --
    PHP Internals - PHP Runtime Development Mailing List
    To unsubscribe, visit: http://www.php.net/unsub.php
  • David Muir at Dec 20, 2011 at 10:43 pm

    On 12/21/2011 03:37 AM, jpauli wrote:
    I guess constant array would mean that all the variables inside the array
    dimensions should not change.
    Just saying that, is a nonsense.

    If a constant could be an array, then that array could not contain
    variables, if not it wouldn't be constant any more as a change to one
    variable inside it would change its own meaning value.

    Julien.P
    A constant can only contain static values. There was no mention of
    variables.

    Isn't a "constant" array basically the same as an Enum?

    David
  • Jpauli at Dec 21, 2011 at 9:02 am
    Okay, but those effectively don't exist in PHP ;)

    Julien
    On Tue, Dec 20, 2011 at 11:43 PM, David Muir wrote:
    On 12/21/2011 03:37 AM, jpauli wrote:
    I guess constant array would mean that all the variables inside the array
    dimensions should not change.
    Just saying that, is a nonsense.

    If a constant could be an array, then that array could not contain
    variables, if not it wouldn't be constant any more as a change to one
    variable inside it would change its own meaning value.

    Julien.P
    A constant can only contain static values. There was no mention of
    variables.

    Isn't a "constant" array basically the same as an Enum?

    David

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-internals @
categoriesphp
postedDec 19, '11 at 8:19p
activeDec 21, '11 at 9:02a
posts10
users8
websitephp.net

People

Translate

site design / logo © 2023 Grokbase