首页 > 解决方案 > 无法按键获取数组元素,但数组中存在键

问题描述

我正在使用 Drupal 8,但由于这对我来说似乎是一个 PHP 问题,所以我在这里而不是在 Drupal Answers 上问它。

isset以下代码中的语句应该 return ,TRUE但它没有:

/*
$specifier = 'field_google_hire_identifier‎'
$field_storage_definitions = array of objects
*/

var_dump(
  isset($field_storage_definitions[$specifier]),
  $specifier,
  $field_storage_definitions[$specifier],
  $field_storage_definitions
);
die;

屏幕输出: 其他数组元素...其他数组元素...var_dump() 输出 var_dump() 输出

原始输出 HTML:https ://codepen.io/anon/pen/ZwRJdR

数组键:

var_dump( array_keys($field_storage_definitions));

屏幕输出: 数组键

我有点不知道为什么isset($field_storage_definitions[$specifier]FALSE$field_storage_definitions[$specifier]NULL

我卸载了 APC 并禁用了 Opcache。

标签: phpdrupal-8drupal-fields

解决方案


字符串末尾有一个从右到左的标记,用于选择数组键。由于字符串和数组键不相同,因此无法检索到数组键。

可以使用从左到右的标记删除

preg_replace('/\p{C}+/u', "", $string)

https://stackoverflow.com/a/23131396/6653862

您可以使用以下方法检查字符串是否包含不可见字符

json_encode($string)

推荐阅读