$ Myvar-testi gibi PHP değişkeni geçerli değil?

7 Cevap

I $myvar-test; gibi bir var oluşturmanız gerekir ama geçerli değil veya şu?

7 Cevap

Hayır, bu geçerli değil. (-) Nedeni eksi işaretidir. PHP, değişkenler bir sayı ile başlamamalıdır ve Unicode harfler izin verildiğini hariç 0-9a-zA-z_ içerebilir. Bkz: http://www.php.net/manual/en/language.variables.basics.php

Variables in PHP are represented by a dollar sign followed by the name of the variable. The variable name is case-sensitive.

Variable names follow the same rules as other labels in PHP. A valid

variable name starts with a letter or underscore, followed by any number of letters, numbers, or underscores. As a regular expression, it would be expressed thus: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'

Ve birkaç örnek:

<?php
$var = 'Bob';
$Var = 'Joe';
echo "$var, $Var";      // outputs "Bob, Joe"

$4site = 'not yet';     // invalid; starts with a number
$_4site = 'not yet';    // valid; starts with an underscore
$täyte = 'mansikka';    // valid; 'ä' is (Extended) ASCII 228.
?>

Geçici çözümler vardır, ama gerçekten, gerçekten çirkin var. Daha iyi bir çizgi, ya da camelCase veya anahtar adları gibi herhangi bir dizeyi kullanabilirsiniz bir dizi kullanın.

Bu geçici çözüm olacaktır:

${'a-b'} = 'foo';

var_dump(${'a-b'}); // string(3) "foo"

Siz değişken adları tire kullanamazsınız.

Belgeleri:

PHP Değişkenler değişkenin adını ardından dolar işareti ile temsil edilir. Değişken ismi harf duyarlıdır.

Değişken isimleri PHP diğer etiket olarak aynı kuralları uygulayın. Geçerli bir değişken ismi bir harfle başlar, ya da çizgi, harfler, sayılar, ya da alt çizgi herhangi sayısına göre izledi. Düzenli ifade olarak, şu şekilde ifade edilebilir: '[a-zA-Z_ \ x7f-\ xff] [a-zA-Z0-9_ \ x7f-\ xff] *'

Source: http://www.php.net/manual/en/language.variables.basics.php

minus sign used for subtraction
you will end up with same result with variables like $myvar*test $myvar$test, $myvar;test $myvar(test and such.

Sadece değişken isimlerinden özel sözdizimi kullanmayın.

Bu dizi anahtarı adları bile ulusal dillerin hemen hemen her karakteri içerebilir Not

Dan PHP documentation

Değişken isimleri PHP diğer etiket olarak aynı kuralları uygulayın. Geçerli bir değişken ismi bir harfle başlar, ya da çizgi, harfler, sayılar, ya da alt çizgi herhangi sayısına göre izledi. Düzenli ifade olarak, şu şekilde ifade edilebilir: '[a-zA-Z_ \ x7f-\ xff] [a-zA-Z0-9_ \ x7f-\ xff] *'

Yani değişken adı bu kurallara göre geçersiz.

Hayır, öyle değil.

http://www.php.net/manual/en/language.variables.basics.php

Değişken isimleri PHP diğer etiket olarak aynı kuralları uygulayın. Geçerli bir değişken ismi bir harfle başlar, ya da çizgi, harfler, sayılar, ya da alt çizgi herhangi sayısına göre izledi.

Bu geçerli değil - ama JSON örneğin olsun - eğer burada geçici bir çözüm değildir:

print_r($JSONObject);

stdClass Object (
    [psr-0] => stdClass Object
        (
            [MyBundle] => 'MyPath' 
        )

)

... Erişmeye çalışıyor $JSONObject->psr-0; çalışmıyor - böylece stdClass çevirebilirsiniz Array:

$JSONArray = (array)$JSONObject;
print_r($JSONArray);

Array
(
    [psr-0] => stdClass Object
        (
            [MyBundle] => 'MyPath' 
        )

) 

... Şimdi yapabilirsiniz kolay erişim $JSONArray['psr-0']!