Каждый разработчик программного обеспечения хочет создать их собственную систему отслеживания ошибок. Это - потому что мы можем , очевидно , изменяют к лучшему то, что уже там, так как мы - специалисты по проблемной области.
Это почти наверняка не стоит стоимости (с точки зрения часов разработчика). Просто купите JIRA.
при необходимости в дополнительных отчетах для системы отслеживания ошибок можно добавить их, даже если необходимо сделать это путем доступа к базовой базе данных непосредственно.
Это зависит от:
$a1 = array('a' => 1, 'b' => 2, 'c' => 3);
unset($a1['b']);
// array('a' => 1, 'c' => 3)
$a2 = array(1, 2, 3);
unset($a2[1]);
// array(0 => 1, 2 => 3)
// note the missing index 1
// solution 1 for numeric arrays
$a3 = array(1, 2, 3);
array_splice($a3, 1, 1);
// array(0 => 1, 1 => 3)
// index is now continous
// solution 2 for numeric arrays
$a4 = array(1, 2, 3);
unset($a4[1]);
$a4 = array_values($a4);
// array(0 => 1, 1 => 3)
// index is now continous
Обычно unset ()
безопасен для хэш-таблиц (массивов с индексированными строками), но если вам нужно полагаться на непрерывные числовые индексы, вы необходимо использовать либо array_splice ()
, либо комбинацию unset ()
и array_values ()
.
Обычный способ:
unset($arr[5]); // This removes the element from the array
Отфильтрованный способ:
Существует также функция array_filter () , которая заботится о фильтрации массивов
$numeric_data = array_filter($data, "is_numeric");
Чтобы получить последовательный индекс, вы можете использовать
$numeric_data = array_values($numeric_data);
Это зависит от обстоятельств. Если вы хотите удалить элемент, не вызывая пробелов в индексах, вам нужно использовать array_splice:
$a = array('a','b','c', 'd');
array_splice($a, 2, 1);
var_dump($a);
Вывод:
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "d"
}
Использование unset может работать, но это приводит к прерыванию индекса. Иногда это может быть проблемой, когда вы перебираете массив, используя count ($ a) - 1 как меру верхней границы:
$a = array('a','b','c', 'd');
unset($a[2]);
var_dump($a);
Вывод:
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[3]=>
string(1) "d"
}
Как видите, count теперь 3, но индекс последнего element также 3.
Поэтому я рекомендую использовать array_splice для массивов с числовыми индексами и использовать unset только для массивов (на самом деле словарей) с нечисловыми индексами.