$del = $arr[1]['one'];$del записался байт ASCII-сивола "1", условно говоря. unset($arr[1]['one'])$arr = [ 1 => [
    'one' => '111',
    'two' => '222',
],  ];
$del = & $arr[1]; // ссылка на массив
unset($del['one']); // удаление ключа из массива по ссылке
print_r($arr); // результат Array ( [1] => Array ( [two] => 222 ) )$del с элементом исходного массива. А массив останется без изменений. $del = & $arr[1]['one']; // ссылка на элемент, который хочется удалить
unset($del); // не сработает. Просто разорвёт ссылку $del на элемент/**
 * Переделать массив объектов, добавив префикс названию каждого из свойств
 * @param array<object> $srcArray исходный массив объектов
 * @param string $prefix строка, которую добавить перед названием каждого из свойств
 */
$remap = fn (array $srcArray, string $prefix) => array_map(
    function ($obj) use ($prefix) {
        $keyValues = get_object_vars($obj);
        $keys = array_keys($keyValues);
        $values = array_values($keyValues);
        return (object) array_combine(
            array_map(fn ($key) => $prefix . $key, $keys),
            $values
        );
    },
    $srcArray
);// Test
$babySitters = [
    (object) ['a'=>'A1', 'b'=>'B-1'],
    (object) ['a'=>'A2', 'b'=>'B-2'],
    (object) ['a'=>'A3', 'b'=>'B-3'],
    (object) ['a'=>'A4', 'b'=>'B-4', 'c'=>'C4'],
];
$result = $remap($babySitters, 'babysitter_');
echo json_encode($result);[
  {
    "babysitter_a": "A1",
    "babysitter_b": "B-1"
  },
  {
    "babysitter_a": "A2",
    "babysitter_b": "B-2"
  },
  {
    "babysitter_a": "A3",
    "babysitter_b": "B-3"
  },
  {
    "babysitter_a": "A4",
    "babysitter_b": "B-4",
    "babysitter_c": "C4"
  }
]heap_size_limit, например, из командной строки:node -e 'const { getHeapStatistics } = require("node:v8"); console.log(getHeapStatistics().heap_size_limit);'export NODE_OPTIONS=--max_old_space_size=4096document.body.addEventListener('click', e => {
    e.stopPropagaion();
    e.stopImmediatePropagation();
    e.preventDefault();
  }, { capture: true });function workHours(on, off, testNow = null) {
  // TODO: validate input
  const now = testNow ?? new Date().getHours();
  const a = Number(on);
  let b = Number(off);
  const format = (status, nextTime) => ({ status, next_time: nextTime });
  if (a === b) {
    return format(true, 0);
  }
  if (a > b) {
    b += 24;
  }
  if (now >= a && now < b) {
    return format(true, 0);
  }
  if (now < a) {
    return format(false, a - now);
  }
  return format(false, a + 24 - now);
}// Тесты тесты
const tests = [
  [9, 17, 10, { status: true, next_time: 0 }],
  [9, 17, 8, { status: false, next_time: 1 }],
  [9, 17, 17, { status: false, next_time: 16 }],
  [19, 17, 17, { status: false, next_time: 2 }],
  [19, 19, 17, { status: true, next_time: 0 }],
];
const eq = (a, b) => Object.entries(a).every(([k, v]) => b[k] === v);
tests.forEach(test => {
  const [on, off, now, expected] = test;
  const result = workHours(on, off, now);
  const testResult = eq(result, expected);
  if (testResult) {
    console.log('Passed', {on, off, now, result});
  }
  console.assert(testResult, test);
});
- console.log(data.data.values)
+ console.log(data.values)range, majorDimension и values. Последнее и интересует.      http://localhost:8000/apidocker run  -p 8000:8000http://centrifugo:8000/api      const findRangeKey = (keysArray, keyString) => {
  const num = Number(keyString);
  if (keysArray.includes(keyString)) {
    // exact match
    return keyString;
  }
  return keysArray.find(key => {
    const [min, max] = key.split('-').map(Number);
    if (max !== undefined) {
      return num >= min && num <= max;
    }
    return num === min;
  });
};
findRangeKey(['10', '20-40'], 30); // "20-40"
findRangeKey(['10', '20-40'], 20); // "20-40"
findRangeKey(['10', '20-40'], 10); // "10"const data = {
  '10': {
    '5-15': {
      title: '10-5-15',
    }
  },
  '20-60': {
    '5': { title: '20-60-5' },
    '10': { title: '20-60-10' },
    '20-40': { title: '20-60-20-40' },
  },
};
const getTitle = (data, a, b) => {
  const aKey = findRangeKey(Object.keys(data), a);
  if (!aKey) {
    return null;
  }
  const bKey = findRangeKey(Object.keys(data[aKey]), b);
  if (!bKey) {
    return null;
  }
  return data[aKey][bKey].title;
};
console.log(getTitle(data, '10', '5')); // "10-5-15"
console.log(getTitle(data, 40, 30)); // "20-60-20-40"