У меня есть следующий массив
$array = [
'top' => [
'under' => [
'emails' =>
[
'[email protected]' => [
'key' => 'value',
],
'other' => [
'key' => 'value',
]
],
],
],
];
Затем я выполняю следующую команду
$tmp = Hash::check($array, '[email protected]');
Это возвращает 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.[[email protected]]');
var_dump($tmp); //false
$tmp = Hash::check($array, '[email protected]');
var_dump($tmp); //false
$tmp = Hash::check($array, '[email protected]');
var_dump($tmp); //false
Используйте квадратные скобки вокруг ключа электронной почты, чтобы соответствовать конкретному ключу: -
Hash::check($array, 'top.under.emails[[email protected]]');
$tmp = Hash::check($array, '{s}[email protected]');
$tmp = Hash::check($array, 'top.under.emails.test');
не вернетtrue
.