无法通过键获取数组元素,但是键存在于数组中

时间:2019-02-12 15:35:08

标签: php drupal-8 drupal-fields

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

以下代码中的isset语句应返回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() output 其他数组元素... var_dump() output 其他数组元素...

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

阵列键:

var_dump( array_keys($field_storage_definitions));

屏幕上的输出: array keys

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

我卸载了APC并禁用了Opcache。

2 个答案:

答案 0 :(得分:1)

在字符串的末尾有一个right to left mark,用于选择数组键。由于字符串和数组键不相同,因此无法检索数组键。

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

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

请参见https://stackoverflow.com/a/23131396/6653862

您可以通过使用

检查字符串是否包含不可见的字符
json_encode($string)

答案 1 :(得分:-3)

如果我是你,我会尝试以下方法:

"xxx_456".substr(-3)