Hash :: check方法在电子邮件密钥上不返回true

时间:2015-09-04 08:04:39

标签: php arrays cakephp multidimensional-array cakephp-3.0

我有以下数组

$array = [
    'top' => [
        'under' => [
            'emails' =>
                [
                    'test@email.com' => [
                        'key' => 'value',
                    ],
                    'other' => [
                        'key' => 'value',
                    ]
                ],
        ],
    ],
];

然后我执行以下命令

$tmp = Hash::check($array, 'top.under.emails.test@email.com');

这会返回false

如果我将电子邮件值更改为test,然后执行以下行:

$tmp = Hash::check($array, 'top.under.emails.test');

返回true。所以我猜这是一个问题,因为@字符...有没有办法解决这个问题?

汇总:

$tmp = Hash::check($array, 'top.under.emails.other');
var_dump($tmp); //true
$tmp = Hash::check($array, 'top.under.emails.[test@email.com]');
var_dump($tmp); //false
$tmp = Hash::check($array, 'top.under.emails.test@email.com');
var_dump($tmp); //false
$tmp = Hash::check($array, 'top.under.emails.test@email.com.key');
var_dump($tmp); //false

1 个答案:

答案 0 :(得分:1)

使用电子邮件密钥周围的方括号来匹配特定密钥: -

Hash::check($array, 'top.under.emails[test@email.com]');