*
Как видно из названия, возникает такой тип ошибки, когда вы, скорее всего, пытаетесь перебрать или найти значение из массива с не- существующий ключ.
Считаем, что вы пытаетесь показать каждую букву из $string
$string = 'ABCD';
for ($i=0, $len = strlen($string); $i <= $len; $i++){
echo "$string[$i] \n";
}
. Вышеприведенный пример сгенерирует ( онлайн-демонстрацию ):
A
B
C
D
Notice: Uninitialized string offset: 4 in XXX on line X
И, как только скрипт заканчивается эхом D
, вы получите ошибку, потому что внутри цикла for()
вы сказали PHP, чтобы показать вам от первого до пятого символа строки из 'ABCD'
Что, существует, но поскольку цикл начинает отсчитываться от 0
и эха D
к моменту достижения значения 4
, он выдает ошибку смещения.
Аналогичные ошибки:
ArrayLists по существу удерживаются от использования, поскольку они не вводятся - необходимо использовать броски с ними - и они медленнее и меньше пространства, эффективного для типов значения, потому что они требуют, чтобы объекты были упакованы.
Универсальные списки были начаты с.Net 2.0 и являются способом пойти. Часто Список лучше, чем массив с немногими оборотными сторонами.
, Поскольку эти наборы являются частью.Net Библиотеки базовых классов, этот совет также относится к C# и любому.Net языку, который поддерживает дженерики - это не характерно для VB.NET.
Список является универсальной реализацией ArrayList. ArrayList хранит все объекты как Система. Объект , который Вы должны затем бросить к соответствующему типу. ArrayLists неоднородны, Список может сохранить только один тип объектов - что тип предоставил как его универсальный параметр.
List<string> strList; // can store only strings
List<int> intList; // can store only ints
ArrayList someList; // can store anything
ArrayList позволяет Вам писать это:
Dim customers as new ArrayList
Dim c as new Customer
Dim m as new Manager
customers.Add(c)
customers.Add(m)
'This will cause an exception '
For each c as Customer in customers
console.writeline(c.Name)
Next
Список А (Клиента) позволяет только объект Потребительского типа и типов, которые наследовались от Клиента, таким образом, Вы не можете сделать такие ошибки.
, Даже если необходимо поместить объекты несвязанных типов в том же наборе, Список (Объекта) является лучшим выбором, как это делает явным, что Вы имеете дело с различными типами.
Список может использовать дженерики так, чтобы только объекты определенных типов могли быть помещены в него, так, чтобы у Вас могла быть дополнительная проверка типа и так, чтобы можно было сократить время обработки из-за упаковки и распаковывания. Arraylist не может использовать это. Почти во всех случаях Вы захотите использовать Список, а не Arraylist.
ArrayLists занимают еще больше места при использовании на 64-битные для хранения примитивных элементов из-за 64-битных ссылок на память в отличие от 32-битных ссылок на 32-битных машинах и бокса. http://blogs.msdn.com/joshwil/archive/2004/04/13/112598.aspx