Я пытаюсь удалить ненужные данные из многомерного массива.
Массив выглядит так:
[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;
работает!
Задача ещё не решена.
Других решений пока нет …