Метод Hash :: check не возвращает true для ключей электронной почты

1

У меня есть следующий массив

$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
  • 0
    Вам не нужен строковый индикатор, т. $tmp = Hash::check($array, '{s}[email protected]');
  • 0
    Нет я не Если бы я это сделал, то это $tmp = Hash::check($array, 'top.under.emails.test'); не вернет true .
Показать ещё 2 комментария
Теги:
arrays
multidimensional-array
cakephp
cakephp-3.0

1 ответ

1
Лучший ответ

Используйте квадратные скобки вокруг ключа электронной почты, чтобы соответствовать конкретному ключу: -

Hash::check($array, 'top.under.emails[[email protected]]');
  • 0
    Нет не работает
  • 0
    Странно, как это работает для меня с вашим массивом.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню