我有已填充了很多奇怪的字符一些PHP数组键。
这可以吗? 有没有什么我不能使用任何约束?
我有已填充了很多奇怪的字符一些PHP数组键。
这可以吗? 有没有什么我不能使用任何约束?
根据该手册 :
密钥可以是一个整数或字符串。 该值可以是任何类型的。
会出现另外以下主要类型转换:
- 含有效整数的字符串将被强制转换为整数类型。 例如键“8”将实际8.根据存储在另一方面“08”不会投,因为它不是一个有效的十进制整数。
- 浮子还转换为整数,这意味着小数部分将被截断。 例如8.7的关键实际保存8下。
- BOOLS被转换为整数,也即真正的关键,实际上在1和0下的关键假存储。
- 空将转换为空字符串,即键无效实际上将“下的”存储。
- 数组和对象不能用作键。 这样做会导致一个警告:非法偏移类型。
手动再次 :
字符串是一系列字符,其中一个字符是相同的一个字节的。 这意味着,PHP只支持256个字符集,因此不提供原生的Unicode支持。 参见字符串类型的细节。
因此,在短期,任何字符串可以是一个关键。 而一个字符串可以包含(最大2GB)的任何二进制数据。 因此,一个键可以是任意的二进制数据(因为字符串可以是任意的二进制数据)。
数组的键的一些随机的(有效)的滥用:
$w = array(chr(0) => 'null byte?', chr(rand(0, 255)) => 'random byte?');
var_dump($w);
密钥必须是一个字符串或一个整数。 有一些石膏所发生的,但我觉得手工做了解释的一个很好的工作:
密钥可以是一个整数或字符串。 该值可以是任何类型的。
会出现另外以下主要类型转换:
- 含有效整数的字符串将被强制转换为整数类型。 例如键“8”将实际8.根据存储在另一方面“08”不会投,因为它不是一个有效的十进制整数。
- 浮子还转换为整数,这意味着小数部分将被截断。 例如8.7的关键实际保存8下。
- BOOLS被转换为整数,也即真正的关键,实际上在1和0下的关键假存储。
- 空将转换为空字符串,即键无效实际上将“下的”存储。
- 数组和对象不能用作键。 这样做会导致一个警告:非法偏移类型。
我发现这个答案找上一个问题,我有更多的信息。 我使用的字符串与他们UTF-8字符,这不会作为键给数组我有工作。
就像是
$str = "R&D - Solution";
$arr = array( "R&D - Solution" => "Research" );
echo $arr[$str]; // did not work
对我来说,(不大或聪明)的解决方案是做..
$str = md5("R&D - Solution");
$arr = array( md5("R&D - Solution") => "Research" );
echo $arr[$str]; // works!
任何你能塞进一个PHP字符串可以被用来作为数组的关键。 有允许的字符没有限制。
$a = array();
$x = 'long string of random garage';
echo $a[$x]; // this is ok
$x = array();
echo $a[$x]; // not ok
PHP数组的键可以是整数或字符串。 PHP字符串字节数组,这意味着字节序列。 有没有其他类型的字符串和PHP否则不强加阵列关键字符串任何特殊的限制。 换句话说:只要它是一个字符串,任何事情都会发生。
我个人没有在数组键特殊字符的任何问题。 是什么,是不合法的是不是有据可查的,比其他地说,关键要有一个标量。 最好的办法是刚刚尝试一下,看看。
除了所有的答案,因为他们是真正的:你可以使用PSR中 ,他们是某种最好的程序员之间的规则,有一个很好的和标准的编码风格。
如果复杂的键引起“未定义指数”的错误,你可能只是有一个“瘦身”的问题。
我要疯了,因为复杂的密钥吐出“未定义指数”的错误,我想,也许这是一个语法错误。 导致错误的数组键是从场建在距我是转换成一个密钥,并使用新数组中的MySQL数据库查询。 关键是这样的: pl_1DNKoiJKwotCqAycickBVhTy
和这里的代码是如何构造的。
//new array created from database query
$new_array[$dbquery['fieldname']] = {some value};
//key value found in field of second array
$keyval = $array_two['fieldname'];
//this produced the "undefined index" error
echo $new_array[$keyval];
的时候,其实,在$keyval
和$dbquery['fieldname']
似乎是一个完美的匹配(视觉呼应两到浏览器验证)。 谜通过简单地使用解决trim
在所述第二声明这样的: $keyval = trim($array_two['fieldname']);
一旦“修剪”,PHP不再抱怨。
希望这可以节省一些人从一些令人沮丧的时刻...
编码在ANSI PHP页面“é”就可以使用(电影不会显示为支那©MA)。 在记事本++只是使用菜单编码=>转换ANSI和保存