我有一个小的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