Синглтон-класс, многомерный массив, не заданный элемент

Я пытаюсь удалить ненужные данные из многомерного массива.

Массив выглядит так:

[6] => Array
(
[710C27E0-822A-4513-9D44-D97E929484A9] => Array
(
[documents] => Array
(
[0] => error message
)

)

)

И я использую следующий код:

<?php
class report {
private static $instance;
private $data = array();

private function __construct() { }

private function __clone() { }

public function __destruct() { }

public static function singleton() {
if (!isset(self::$instance))
self::$instance = new self();

return self::$instance;
}

public function check() {
foreach($this->data as $key => &$values) {
foreach($values as $k => &$value) {
/* some checks */

if($return != null)
$values[$return] = $values[$k];

unset($values[$k]);
}
if(sizeof($values) == 0)
unset($this->data[$key];
}
}

public function __toString() {
print_r($this->data);
return '';
}
}

Когда я заменяю верхнюю функцию проверки следующим кодом, она работает, но я ищу какое-то лучшее / более чистое и особенно быстрое решение.

public function check() {
$_data = json_encode($this->data);
$data = json_decode($_data);

foreach($data as $key => &$values) {
foreach($values as $k => &$value) {
/* some checks */
if($return != null)
$values->$return = $values->$k;

unset($values->$k);
}
}
$this->data = $data;
}

РЕШИТЬ но не понимая этого ..

public function log($id, $guid, $job, $message) {
$this->data[$id][$guid][$job][] = $message;
}

когда я var_dump ($ guid) он возвращает:

string(36) "710C27E0-822A-4513-9D44-D97E929484A9"

Теперь я сделал приведение строки:

var_dump((string)$guid);

возвращения:

string(36) "710C27E0-822A-4513-9D44-D97E929484A9"

но

$this->data[$id][(string)$guid][$job][] = $message;

работает!

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]