我有一個小的PHP腳本,它使用全局變量是有意義的。其中一個全局變量是一個數組,它僅包含要解壓縮的值,但不能被幾個不同的函數修改。如果腳本不斷擴展,擁有全局數組的想法有點令人不安。有什麼辦法可以把全局數組變成一個常量,不可修改的值嗎?如果是這樣,我仍然可以使用它的implode()
功能嗎?PHP - 常量數組
2
A
回答
3
PHP常量不支持高級數據結構,因此不可能將數組存儲爲常量的值。除非你像你所說的那樣去做,否則會爆炸繩子。
有幾個全局變量(被稱爲超全局變量),其可以從所有PHP範圍:
- $ _GET
- $ _ POST
- $ _REQUEST
- $ _ SERVER
- $ GLOBALS
我強烈建議使用$GLOBALS
,並將您的數組放入該數組中。它將立即在任何功能,類別或包含文件中提供。
<?php
$GLOBALS['my_arr'] = array('key1' => 'val1', 'key2' => 'val2');
function my_func() {
return $GLOBALS['my_arr']['key1'];
}
print my_func(); // prints: val1
雖然你可以序列常量的值或爆炸它時,你想從中攫取價值,記住轉換操作也需要時間。序列化數組,序列化字符串或分解字符串都是非常不必要的操作,只需將值附加到$GLOBALS
即可。如果您需要在腳本中引用來自三個不同範圍的單個值,那麼您不得不三次取消序列化或爆炸。這佔用了更多的內存,最重要的是處理時間。
0
我很害怕明確地說「不,你不能」,但我很確定是這樣。你可以做的是創建一個靜態函數,它將始終返回相同的值數組。這能解決你的問題嗎?
0
你可以序列化數組並在腳本中定義一個常量;
define("GLOBAL_DATA", "xxxxxxxx"); -- use the serialized array
任何函數現在可以反序列化常量並獲取原始數組,知道它沒有被修改。
0
使用PHP的json_encode()函數將其轉換爲JSON,並使用json_decode()將其轉換回字符串。
例子:
<?php
define('CONSTANT',json_encode(array('test')));
//Use the constant:
if(in_array('CONSTANT',json_decode(constant('CONSTANT')))) {
return true;
} else {
return false;
}
?>
相關問題
- 1. PHP數組與PHP常量?
- 2. 常量數組在PHP 5.6中工作?
- 3. PHP數組鍵在一個常量
- 4. jquery數組常量
- 5. 變量與常量與PHP中的關聯數組的關係
- 6. PHP變量數組
- 7. PHP數組變量
- 8. PHP數組變量
- 9. Excel中的數組常量
- 10. 用常量創建數組
- 11. 合併數組數量PHP
- 12. 常量和組合的數量
- 13. 郵資-C WP常量變量和常量數組
- 14. PHP:從PHP文件中獲取PHP的變量,函數,常量
- 15. Php數組的偏移量
- 16. 數組變量鍵/值PHP
- 17. 使數組值變量(PHP)
- 18. PHP數組中的變量?
- 19. PHP數組用隨機量
- 20. PHP:訪問數組變量
- 21. laravel 5.4常用數組,常量,常用函數?
- 22. 從php的子類中獲取數組中的常量
- 23. 我可以在常量PHP中使用嵌套數組
- 24. 函數參數分組和常量
- 25. 添加變量,常量,PHP
- 26. 常量指針和常量數組的輸出
- 27. 具有常量和非常量指針數組的能力
- 28. 爲什麼Pascal常量數組實際上不是常量?
- 29. 勘定PHP變量PHP數組
- 30. PHP變量數組變量鍵列表
你有GOOGLE上搜索 「PHP常量」,發現這個http://php.net/manual/en/language.constants.php? – Popnoodles 2013-03-07 18:31:45
在PHP中使用ENUMS http://stackoverflow.com/questions/254514/php-and-enums – 2013-03-07 18:33:04
@popnoodles事實上,我有。想知道是否有解決方法。 – user1427661 2013-03-07 18:33:34