如何处理PHP数组中的键,如果键包含日语字符


How to handle key in PHP array if the key contains japanese characters

我有这个数组:

[ID] => 荒川之下流三十景-その二十三「赤羽之景」__35.79_139.72
[Email] => 
[InBuildingAddress] => 
[Price] => 
[Street] => 
[Title] => 荒川之下流三十景 その二十三「赤羽之景」
[Website] => 
[Zip] => 
[Rating Star] => 0
[Rating Weight] => 0
[Latitude] => 35.7865334803033
[Longitude] => 139.716800710514
[Building] => 
[City] => Unknown_Japan
[OpeningHour] => 
[TimeStamp] => 0000-00-00 00:00:00
[CountViews] => 0

然后我做这样的事情:

    $output[$info['ID']] = $info; //mess up here
    $tes = $info['ID']['Title'];

你猜怎么着:它搞砸了。它可能会搞砸的原因是$info['ID'] 不是 ascii。然而,我将其用作$output[$info['ID']]的密钥。

基本上,即使PHP中数组的内容可以是日语。这是真的吗?

怎么了?我得到的错误是:

调试警告:/sdfdsfdf/api/test2.php第 36 行 - 找不到元素????????-???????????__35.79_139.72 在变量中调试警告:/sdfdsfdf/api/test2.php第 36 行 - main() [function.main]:依赖系统的时区设置是不安全的。您需要使用 date.timezone 设置或 date_default_timezone_set() 函数。如果您使用了其中任何一种方法,但仍然收到此警告,则很可能拼写错了时区标识符。我们选择"亚洲/克拉斯诺亚尔斯克"作为"7.0/无夏令时"

这么多问号。

为什么会这样?PHP 内部到底发生了什么?我在哪里可以了解更多此类内容?最重要的是,处理这种情况的最佳方法是什么?我应该告诉 PHP 在内部始终使用 UTF-8 吗?PHP 数组本身就没有非 ASCII 值吗?

运行以下命令:

$utf8str = '荒川之下流三十景-その二十三「赤羽之景」__35.79_139.72';
$arr = Array(
    $utf8str => $utf8str,
);
var_dump($arr);

$arr[$utf8str] = "test";
var_dump($arr);

我明白这个:

array
  '荒川之下流三十景-その二十三「赤羽之景」__35.79_139.72' => string '荒川之下流三十景-その二十三「赤羽之景」__35.79_139.72' (length=72)
array
  '荒川之下流三十景-その二十三「赤羽之景」__35.79_139.72' => string 'test' (length=4)

所以 PHP 可以将 utf8 字符作为数组键处理......


关于date相关的警告,请先使用谷歌,它比提出问题并等待人们一遍又一遍地提出相同问题的答案更快(假设这就是您被否决的原因)

谷歌搜索