Что такое код in_array


Содержание

in_array

in_array — Проверяет, присутствует ли в массиве значение

Описание

Ищет в haystack значение needle.

Список параметров

Если needle — строка, сравнение будет произведено с учетом регистра.

Если третий параметр strict установлен в TRUE тогда функция in_array() также проверит соответствие типов параметра needle и соответствующего значения массива haystack.

Возвращаемые значения

Возвращает TRUE, если needle был найден в массиве, и FALSE в обратном случае.

Список изменений

Версия Описание
4.2.0 needle теперь может быть массивом.

Примеры

Пример #1 Пример использования in_array()

Второго совпадения не будет, потому что in_array() регистрозависима, таким образом, программа выведет:

Пример #2 Пример использования in_array() с параметром strict

= array( ‘1.10’ , 12.4 , 1.13 );

if ( in_array ( ‘12.4’ , $a , true )) <
echo «‘12.4’ найдено со строгой проверкой\n» ;
>

if ( in_array ( 1.13 , $a , true )) <
echo «1.13 найдено со строгой проверкой\n» ;
>
?>

Результат выполнения данного примера:

Пример #3 Пример использования in_array() с массивом в качестве параметра needle

= array(array( ‘p’ , ‘h’ ), array( ‘p’ , ‘r’ ), ‘o’ );

if ( in_array (array( ‘p’ , ‘h’ ), $a )) <
echo «‘ph’ найдено\n» ;
>

if ( in_array (array( ‘f’ , ‘i’ ), $a )) <
echo «‘fi’ найдено\n» ;
>

if ( in_array ( ‘o’ , $a )) <
echo «‘o’ найдено\n» ;
>
?>

Результат выполнения данного примера:

Смотрите также

  • array_search() — Осуществляет поиск данного значения в массиве и возвращает соответствующий ключ в случае удачи
  • isset() — Устанавливает, определена ли переменная
  • array_key_exists() — Проверяет, присутствует ли в массиве указанный ключ или индекс

Справочник по PHP : Функции работы с данными : Работа с массивами : Ключи и значения

смотрим также
    По материалам: Мартино пока не видит Икарди в сборной Аргентины.

Материал из Справочник Web-языков

Содержание

array_flip

Меняет местами индексы и значения массива.

Эта функция «пробегает» по массиву и меняет местами его ключи и значения. Исходный массив arr не изменяется, а результирующий массив просто возвращается. Если в массиве присутствовало несколько элементов с одинаковыми значениями, учитываться будет только последний из них.

Значения массива arr должны быть либо целыми числами, либо строковыми значениями. Иначе пара ключ / значение не будут обработаны.

Функция array_flip() возвратит FALSE, если обработка массива вызвала ошибку.

Пример использования функции array_flip():

Пример использования функции array_flip():

многократное повторение значения

Приведенный выше пример выведет следующее:

Функция поддерживается PHP 4, PHP 5

array_keys

Возвращает список из ключей массива.

Функция возвращает массив, значениями которого являются все строковые и числовые ключи массива arr. Если задан необязательный параметр search_value, то она вернет только те ключи, которым соответствуют значению search_value.

Пример испольльзования функции array_keys():

Приведенный выше пример выведет следующее:

Функция array_keys() появилась в PHP 4.

Ее эквивалент для PHP 3:

Функция поддерживается PHP 4, PHP 5

array_values

Удаление ассоциативных индексов массива.

Функция array_values() возвращает список всех значений в ассоциативном массиве arr. При этом она заменяет все строковые ключи на числовые.

Пример использования функции array_values():

Этот пример выведет:

Функция поддерживается PHP 4, PHP 5

in_array

Осуществляет проверку массива на наличие значения.

Функция in_array() возвратит TRUE, если в массиве haystack содержится элемент со значением needle, и FALSE в противном случае.

Если установить третий необязательный параметр strict в значение TRUE, то функция in_array() при проверке также будет сравнивать типы значений.

Замечание: Если параметр needle является строкой, то при сравнении регистр символов учитывается.

Замечание: В PHP версии ниже 4.2.0 параметр needle не мог быть массивом.

Пример использования функции in_array():

Второе условие не сработает, т.к. поиск в массиве идет с учетом регистра.

Пример использования функции in_array(): Использование параметра strict

Функция поддерживается PHP 4, PHP 5

array_count_values

Возвращает количество значений массива.

array array_count_values(array arr)

Эта функция подсчитывает, сколько раз каждое значение встречается в массиве arr, и возвращает ассоциативный массив с ключами — элементами массива и значениями — количеством повторов этих элементов. Иными словами, функция array_count_values() подсчитывает частоту появления значений в массиве arr.

Пример использования функции array_count_values():

Пример выведет следующее:

Функция поддерживается PHP 4, PHP 5

sizeof

Возвращает число элементов массива.

Функция sizeof() возвращает количество элементов в массиве arr на подобие действия функции count().

count

Возвращает число элементов в массиве или объекте.

Функция count() возвращает число элементов в массиве или объекте var. В случае, если var — скалярная переменная, то функция возвращает 1, если такая переменная существует, или 0, если такой переменной нет.

Надо отметить, что 0 возвращается и тогда, когда указан массив, не содержащий элементов (NULL).

Если задан необязательный параметр mode, то будет подсчитано общее количество элементов в массиве. Это может быть полезно при нахождении количества элементов в многомерных массивах.

Пример использования функции count():

Пример использования функции count(): (PHP >= 4.2.0)

Функция поддерживается PHP 3, PHP 4, PHP 5

array_sum

Возвращает сумму всех элементов массива.

Функция array_sum() возвращает сумму всех числовых элементов массива. От типа значений в массиве зависит тип возвращаемого числа (integer или float).

Пример использования функции array_sum():

Этот пример выведет следующее:

Функция поддерживается PHP 4 >=4.0.4, PHP 5

array_rand

Производит случайную выборку индексов массива.

Функция array_rand() будет полезной, если вы хотите выбрать одно или несколько случайных значений из массива. Эта функция возвращает в массиве выбранные случайным образом индексы элементов массива arr.

Аргумент num_req указывает число возвращаемых индексов. В случае, если выбирается один элемент, то функция array_rand() возвратит случайный ключ в виде значения.

Пример использования функции array_rand():

Функция поддерживается PHP 4, PHP 5

array_change_key_case

Функция устанавливает значения ключей массива в верхний или нижний регистр.

Функция array_change_key_case() возвращает исходный массив arr, ключи которого преобразованы в верхний или нижний регистр.

Необязательный параметр registr может принимать следующие значения:

  • CASE_LOWER — все ключи массива преобразуются в нижний регистр (значение по умолчанию);
  • CASE_UPPER — в верхний регистр.

Данная функция не изменяет ключи, состоящие из чисел.

Пример использования функции array_change_key_case():

Пример выведет следующее:


Функция поддерживается PHP 4 >= 4.2.0, PHP 5

array_combine

Функция объединяет два массива, причем значения первого становяться ключами, а значения второго — значениями.

Функция array_combine() возвращает массив, ключами которого являются значения массива keys, а значениями — значения массива values.

Функция возвратит FALSE, если размерность массивов keys и values не совпадают, или эти массивы не содержат значений.

Пример использования функции array_combine():

Пример выведет следующее:

Функция поддерживается PHP 5

array_key_exists

Проверка существования заданного ключа в массиве.

Функция array_key_exists() возвратит TRUE, если в массиве search присутствует элемент с индексом key.

В противном случае возвратит FALSE.

Пример использования функции array_key_exists():

В PHP 4.0.6. имя этой функции key_exists().

Функция поддерживается PHP 4 >= 4.0.1, PHP 5

array

Англо-русский толковый словарь терминов и сокращений по ВТ, Интернету и программированию. . 1998-2007 .

Смотреть что такое «array» в других словарях:

Array — Ar*ray , n. [OE. arai, arrai, OF. arrai, arrei, arroi, order, arrangement, dress, F. arroi; a (L. ad) + OF. rai, rei, roi, order, arrangement, fr. G. or Scand.; cf. Goth. ra >The Collaborative International Dictionary of English

array — ar·ray 1 /ə rā/ vt: to set (a jury) for trial; specif: to set (a jury) by calling out the names of the jurors one at a time compare impanel array 2 n: the group of people summoned to serve as jurors from which the jury will be chosen; also: a… … Law dictionary

array — ar‧ray [əˈreɪ] noun [countable] 1. a range of many different things: • a vast array of electronic and consumer products 2. COMPUTING a set of computer memory units arranged in rows across or down: • a device that stores massive amounts of… … Financial and business terms

array — [n1] collection, cons >New thesaurus

array — vb 1 *line, line up, range, align Analogous words: marshal, arrange, *order Antonyms: disarray 2 *clothe, apparel, attire, robe, dress array n *display, parade, pomp Analogous words: showing … New Dictionary of Synonyms

array — ► NOUN 1) an impressive display or range of a particular thing. 2) an ordered arrangement of troops. 3) literary elaborate or beautiful clothing. ► VERB 1) display or arrange in a neat or impressive way. 2) (be arrayed in) be elaborately clothed… … English terms dictionary

array — [ə rā′] vt. [ME arraien < OFr areer < ML * arredare, to put in order < L ad , to + Gmc * ra >English World dictionary

Array — In computer science an array [Paul E. Black, array , in Dictionary of Algorithms and Data Structures , Paul E. Black, ed., U.S. National Institute of Standards and Technology. 26 August 2008 (accessed 10 September 2008).… … Wikipedia

Array — Datenfeld; Feld * * * Ar|ray 〈[ərɛı] m. 6 oder n. 15〉 1. Anordnung, Anreihung gleichartiger Dinge 2. 〈EDV〉 Liste von Datenwerten gleichen Typs 3. 〈El.〉 reihenartige Anordnung gleichartiger elektronischer Bauelemente [engl., „Aufstellung,… … Universal-Lexikon

array — noun ADJECTIVE ▪ broad, endless, extensive, full, huge, large, vast, w >Collocations dictionary

FPublisher

Web-технологии: База знаний

Документация PHP

in_array

in_array — Проверить, присутствует ли в массиве значение

Описание

bool in_array ( mixed $needle , array $haystack [, bool $strict ] )

Ищет в haystack значение needle и возвращает TRUE в случае удачи, FALSE в противном случае.

Если третий параметр strict установлен в TRUE тогда функция in_array() также проверит соответствие types параметра needle и соответствующего значения массива haystack .

Замечание: Если needle — строка, сравнение будет регистрозависмым.

Замечание: В PHP версий, более ранних, чем 4.2.0 параметр needle не может быть массивом.

Пример #1 Пример использования in_array()

= array( «Mac» , «NT» , «Irix» , «Linux» );
if ( in_array ( «Irix» , $os )) <
echo «Got Irix» ;
>
if ( in_array ( «mac» , $os )) <
echo «Got mac» ;
>
?>

Второго совпадения не будет, потому что in_array() регистрозависима, таким образом, программа выведет:

Пример #2 Пример использования in_array() с параметром strict

= array( ‘1.10’ , 12.4 , 1.13 );

if ( in_array ( ‘12.4’ , $a , true )) <
echo «‘12.4’ found with strict check
» ;
>

if ( in_array ( 1.13 , $a , true )) <
echo «1.13 found with strict check
» ;
>
?>

Результат выполнения данного примера:

Пример #3 Пример использования in_array() с массивом в качестве параметра needle

= array(array( ‘p’ , ‘h’ ), array( ‘p’ , ‘r’ ), ‘o’ );

if ( in_array (array( ‘p’ , ‘h’ ), $a )) <
echo «‘ph’ найдено
» ;
>

if ( in_array (array( ‘f’ , ‘i’ ), $a )) <
echo «‘fi’ найдено
» ;
>

if ( in_array ( ‘o’ , $a )) <
echo «‘o’ найдено
» ;
>
?>

Почему не проходит проверка in_array?

Детский вопрос.
У меня не работает in_array.
Все проверил, длина строк, тип данных, и указывал и строгую и не строгую проверку. Никак.
Вот кусочек кода. Нужно из общего массива исключить элементы, которые мы передаем постом.

Используем !in_array , что бы видео, которые мы не указали, видео может быть несколько, добавились в массив. В моем примере, это видео не должно попасть в массив, но она попадает.

И вот, факт того, что строки одинаковые.

Даже если я указываю «жестко» нужную строку, она все равно не удаляется.

Вот результат, тут ссылки на видео не должно быть

Array Класс

Определение

Предоставляет методы для создания, изменения, поиска и сортировки массивов, то есть выступает в роли базового класса для всех массивов в среде CLR. Provides methods for creating, manipulating, searching, and sorting arrays, thereby serving as the base class for all arrays in the common language runtime.

Примеры

В следующем примере кода показано использование Array.Copy для копирования элементов между массивом целочисленного типа и массивом объектов типа Object. The following code example shows how Array.Copy copies elements between an array of type integer and an array of type Object.

В следующем примере кода создается и инициализируется Array и отображаются его свойства и элементы. The following code example creates and initializes an Array and displays its properties and its elements.

Комментарии

Класс Array не является частью пространства имен System.Collections. The Array class is not part of the System.Collections namespaces. Тем не менее, он все равно считается коллекцией, так как он основан на интерфейсе IList. However, it is still considered a collection because it is based on the IList interface.

Класс Array является базовым классом для реализаций языков, поддерживающих массивы. The Array class is the base class for language implementations that support arrays. Однако только система и компиляторы могут явно наследовать от класса Array. However, only the system and compilers can derive explicitly from the Array class. Пользователи должны применять конструкции массивов, предоставляемые языком. Users should employ the array constructs provided by the language.

Элемент — это значение в Array. An element is a value in an Array. Длина Array — общее количество элементов, которое может содержать массив. The length of an Array is the total number of elements it can contain. Нижняя граница Array — это индекс его первого элемента. The lower bound of an Array is the index of its first element. Array может иметь любую нижнюю границу, но по умолчанию его нижняя граница равна нулю. An Array can have any lower bound, but it has a lower bound of zero by default. Другая нижняя граница может быть определена при создании экземпляра Array с помощью CreateInstance. Многомерный массив Array может иметь разные границы в каждом измерении. A different lower bound can be defined when creating an instance of the Array class using CreateInstance.A multidimensional Array can have different bounds for each dimension. Массив может иметь не более 32 измерений. An array can have a maximum of 32 dimensions.

В отличие от классов в пространстве имен System.Collections, Array имеет фиксированную емкость. Unlike the classes in the System.Collections namespaces, Array has a fixed capacity. Чтобы увеличить емкость, необходимо создать новый объект Array с требуемой емкостью, скопировать элементы из старого объекта Array в новый, а затем удалить старый Array. To increase the capacity, you must create a new Array object with the required capacity, copy the elements from the old Array object to the new one, and delete the old Array.

Размер массива ограничен максимальным количеством элементов — 4 миллиарда, а также максимальным индексом 0X7FEFFFFF в любом заданном измерении (0X7FFFFFC7 для массивов байтов и однобайтовых структур). The array size is limited to a total of 4 billion elements, and to a maximum index of 0X7FEFFFFF in any given dimension (0X7FFFFFC7 for byte arrays and arrays of single-byte structures).

.NET framework: По умолчанию максимальный размер Array составляет 2 гигабайта (ГБ). .NET Framework only: By default, the maximum size of an Array is 2 gigabytes (GB). В 64-разрядной среде можно избежать ограничения на размер, установив значение атрибута enabled элемента конфигурации gcAllowVeryLargeObjects равным true в среде выполнения. In a 64-bit environment, you can avoid the size restriction by setting the enabled attribute of the gcAllowVeryLargeObjects configuration element to true in the run-time environment.

Одномерные массивы реализуют универсальные интерфейсы System.Collections.Generic.IList , System.Collections.Generic.ICollection , System.Collections.Generic.IEnumerable , System.Collections.Generic.IReadOnlyList и System.Collections.Generic.IReadOnlyCollection . Single-dimensional arrays implement the System.Collections.Generic.IList , System.Collections.Generic.ICollection , System.Collections.Generic.IEnumerable , System.Collections.Generic.IReadOnlyList and System.Collections.Generic.IReadOnlyCollection generic interfaces. Реализации предоставляются массивам во время выполнения, и таким образом, универсальные интерфейсы не отображаются в синтаксисе объявления класса Array. The implementations are provided to arrays at run time, and as a result, the generic interfaces do not appear in the declaration syntax for the Array class. Кроме того, не существует справочных разделов для членов интерфейса, которые доступны только путем приведения массива к типу универсального интерфейса (явные реализации интерфейса). In addition, there are no reference topics for interface members that are accessible only by casting an array to the generic interface type (explicit interface implementations). Ключевой момент, который необходимо учитывать при приведении массива к одному из этих интерфейсов, заключается в том, что члены, которые добавляют, вставляют или удаляют элементы, вызывают исключение NotSupportedException. The key thing to be aware of when you cast an array to one of these interfaces is that members which add, insert, or remove elements throw NotSupportedException.

Объекты Type предоставляют сведения об объявлениях типов массивов. Type objects provide information about array type declarations. Объекты Array с тем же типом массива имеют одинаковые объекты Type. Array objects with the same array type share the same Type object.

Type.IsArray и Type.GetElementType могут не возвращать ожидаемые результаты с Array, потому что при приведении массива к типу Array результат — это объект, который не является массивом. Type.IsArray and Type.GetElementType might not return the expected results with Array because if an array is cast to the type Array, the result is an object, not an array. То есть typeof(System.Array).IsArray возвращает false , а typeof(System.Array).GetElementType возвращает null . That is, typeof(System.Array).IsArray returns false , and typeof(System.Array).GetElementType returns null .

Метод Array.Copy копирует элементы не только между массивами одного типа, но и между стандартными массивами различных типов; он автоматически осуществляет приведение типов. The Array.Copy method copies elements not only between arrays of the same type but also between standard arrays of different types; it handles type casting automatically.

Некоторые методы, например CreateInstance, Copy, CopyTo, GetValue и SetValue, предоставляют перегрузки, принимающие 64-разрядные целые числа в качестве параметров, для обеспечения возможности работы с массивами большой емкости. Some methods, such as CreateInstance, Copy, CopyTo, GetValue, and SetValue, provide overloads that accept 64-bit integers as parameters to accommodate large capacity arrays. LongLength и GetLongLength возвращают 64-разрядные целые числа, указывающие длину массива. LongLength and GetLongLength return 64-bit integers indicating the length of the array.

Сортировка Array не гарантируется. The Array is not guaranteed to be sorted. Перед выполнением операций, для которых требуется сортировка Array (например, BinarySearch), Array нужно предварительно отсортировать. You must sort the Array prior to performing operations (such as BinarySearch) that require the Array to be sorted.

Использование объектов Array указателей в машинном коде не поддерживается и вызывает исключение NotSupportedException для нескольких методов. Using an Array object of pointers in native code is not supported and will throw a NotSupportedException for several methods.

Свойства

Получает значение, указывающее, имеет ли список Array фиксированный размер. Gets a value indicating whether the Array has a fixed size.

Получает значение, указывающее, является ли объект Array доступным только для чтения. Gets a value indicating whether the Array is read-only.

Возвращает значение, показывающее, является ли доступ к коллекции Array синхронизированным (потокобезопасным). Gets a value indicating whether access to the Array is synchronized (thread safe).

Возвращает общее число элементов во всех измерениях массива Array. Gets the total number of elements in all the dimensions of the Array.

Возвращает 64-разрядное целое число, представляющее общее число элементов во всех измерениях массива Array. Gets a 64-bit integer that represents the total number of elements in all the dimensions of the Array.

Получает ранг (размерность) объекта Array. Gets the rank (number of dimensions) of the Array. Например, одномерный массив возвращает 1, двухмерный массив возвращает 2 и т д For example, a one-dimensional array returns 1, a two-dimensional array returns 2, and so on.

Получает объект, с помощью которого можно синхронизировать доступ к коллекции Array. Gets an object that can be used to synchronize access to the Array.

Методы

Возвращает для заданного массива доступную только для чтения программу-оболочку. Returns a read-only wrapper for the specified array.

Выполняет поиск значения в диапазоне элементов отсортированного одномерного массива, используя интерфейс IComparable, реализуемый каждым элементом массива и заданным значением. Searches a range of elements in a one-dimensional sorted array for a value, using the IComparable interface implemented by each element of the array and by the specified value.

Выполняет поиск значения в диапазоне элементов отсортированного одномерного массива, используя указанный интерфейс IComparer. Searches a range of elements in a one-dimensional sorted array for a value, using the specified IComparer interface.

Выполняет поиск заданного элемента во всем отсортированном одномерном массиве, используя интерфейс IComparable, реализуемый каждым элементом массива и заданным объектом. Searches an entire one-dimensional sorted array for a specific element, using the IComparable interface implemented by each element of the array and by the specified object.

Выполняет поиск значения во всем отсортированном одномерном массиве, используя указанный универсальный интерфейс IComparer. Searches an entire one-dimensional sorted array for a value using the specified IComparer interface.

Выполняет поиск значения в диапазоне элементов отсортированного одномерного массива, используя для этого универсальный интерфейс IComparable , реализуемый каждым элементом массива Array и заданным значением. Searches a range of elements in a one-dimensional sorted array for a value, using the IComparable generic interface implemented by each element of the Array and by the specified value.

Выполняет поиск значения в диапазоне элементов отсортированного одномерного массива, используя указанный универсальный интерфейс IComparer . Searches a range of elements in a one-dimensional sorted array for a value, using the specified IComparer generic interface.

Выполняет поиск заданного элемента во всем отсортированном одномерном массиве, используя для этого универсальный интерфейс IComparable , реализуемый каждым элементом массива Array и заданным объектом. Searches an entire one-dimensional sorted array for a specific element, using the IComparable generic interface implemented by each element of the Array and by the specified object.

Выполняет поиск значения во всем отсортированном одномерном массиве, используя указанный универсальный интерфейс IComparer . Searches an entire one-dimensional sorted array for a value using the specified IComparer generic interface.

Задает для диапазона элементов в массиве значение, предусмотренное по умолчанию для каждого типа элементов. Sets a range of elements in an array to the default value of each element type.

Создает неполную копию Array. Creates a shallow copy of the Array.

Копирует диапазон элементов из массива Array, начиная с заданного индекса источника, и вставляет его в другой массив Array, начиная с заданного индекса назначения. Copies a range of elements from an Array starting at the specified source index and pastes them to another Array starting at the specified destination index. Гарантирует, что в случае невозможности успешно скопировать весь диапазон, все изменения будут отменены. Guarantees that all changes are undone if the copy does not succeed completely.

Преобразует массив одного типа в массив другого типа. Converts an array of one type to an array of another type.

Копирует диапазон элементов из массива Array, начиная с первого элемента, и вставляет его в другой массив Array, также начиная с первого элемента. Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element. Длина задается как 32-битовое целое число. The length is specified as a 32-bit integer.

Копирует диапазон элементов из массива Array, начиная с первого элемента, и вставляет его в другой массив Array, также начиная с первого элемента. Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element. Длина задается как 64-битовое целое число. The length is specified as a 64-bit integer.

Копирует диапазон элементов из массива Array, начиная с заданного индекса источника, и вставляет его в другой массив Array, начиная с заданного индекса назначения. Copies a range of elements from an Array starting at the specified source index and pastes them to another Array starting at the specified destination index. Длина и индексы задаются как 32-битовые целые числа. The length and the indexes are specified as 32-bit integers.

Копирует диапазон элементов из массива Array, начиная с заданного индекса источника, и вставляет его в другой массив Array, начиная с заданного индекса назначения. Copies a range of elements from an Array starting at the specified source index and pastes them to another Array starting at the specified destination index. Длина и индексы задаются как 64-разрядные целые числа. The length and the indexes are specified as 64-bit integers.

Копирует все элементы текущего одномерного массива в заданный одномерный массив начиная с указанного индекса в массиве назначения. Copies all the elements of the current one-dimensional array to the specified one-dimensional array starting at the specified destination array index. Индекс задается как 32-битовое целое число. The index is specified as a 32-bit integer.

Копирует все элементы текущего одномерного массива в заданный одномерный массив начиная с указанного индекса в массиве назначения. Copies all the elements of the current one-dimensional array to the specified one-dimensional array starting at the specified destination array index. Индекс задается как 64-битовое целое число. The index is specified as a 64-bit integer.

Создает одномерный массив Array заданного типа Type и длины, индексация которого начинается с нуля. Creates a one-dimensional Array of the specified Type and length, with zero-based indexing.


Создает двумерный массив Array заданного типа Type с заданными длинами по измерениям и индексацией, начинающейся с нуля. Creates a two-dimensional Array of the specified Type and dimension lengths, with zero-based indexing.

Создает трехмерный массив Array заданного типа Type с заданными длинами по измерениям и индексацией, начинающейся с нуля. Creates a three-dimensional Array of the specified Type and dimension lengths, with zero-based indexing.

Создает многомерный массив Array заданного типа Type с заданными длинами по измерениям и индексацией, начинающейся с нуля. Creates a multidimensional Array of the specified Type and dimension lengths, with zero-based indexing. Длины по измерениям задаются в массиве 32-разрядных целых чисел. The dimension lengths are specified in an array of 32-bit integers.

Создает многомерный массив Array с указанным типом Type и длиной по измерениям и с заданными нижними границами. Creates a multidimensional Array of the specified Type and dimension lengths, with the specified lower bounds.

Создает многомерный массив Array заданного типа Type с заданными длинами по измерениям и индексацией, начинающейся с нуля. Creates a multidimensional Array of the specified Type and dimension lengths, with zero-based indexing. Длины по измерениям задаются в массиве 64-разрядных целых чисел. The dimension lengths are specified in an array of 64-bit integers.

Возвращает пустой массив. Returns an empty array.

Определяет, равен ли заданный объект текущему объекту. Determines whether the specified object is equal to the current object.

(Унаследовано от Object) Exists (T[], Predicate )

Определяет, содержит ли заданный массив элементы, удовлетворяющие условиям указанного предиката. Determines whether the specified array contains elements that match the conditions defined by the specified predicate.

Присваивает заданное value типа T каждому элементу указанного array . Assigns the given value of type T to each element of the specified array .

Присваивает заданное value типа T элементам указанного array , которые находятся в диапазоне startIndex (включительно) и следующем количестве count индексов. Assigns the given value of type T to the elements of the specified array which are within the range of startIndex (inclusive) and the next count number of indices.

Выполняет поиск элемента, удовлетворяющего условиям указанного предиката, и возвращает первое найденное вхождение в пределах всего списка Array. Searches for an element that matches the conditions defined by the specified predicate, and returns the first occurrence within the entire Array.

Извлекает все элементы, удовлетворяющие условиям указанного предиката. Retrieves all the elements that match the conditions defined by the specified predicate.

Выполняет поиск элемента, удовлетворяющего условиям указанного предиката, и возвращает отсчитываемый от нуля индекс первого вхождения в диапазоне элементов списка Array, начинающемся с заданного индекса и содержащем указанное число элементов. Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the first occurrence within the range of elements in the Array that starts at the specified index and contains the specified number of elements.

Выполняет поиск элемента, удовлетворяющего условиям указанного предиката, и возвращает отсчитываемый от нуля индекс первого вхождения в диапазоне элементов списка Array, начиная с заданного индекса и заканчивая последним элементом. Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the first occurrence within the range of elements in the Array that extends from the specified index to the last element.

Выполняет поиск элемента, удовлетворяющего условиям указанного предиката, и возвращает отсчитываемый от нуля индекс первого найденного вхождения в пределах всего списка Array. Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the first occurrence within the entire Array.

Выполняет поиск элемента, удовлетворяющего условиям указанного предиката, и возвращает последнее найденное вхождение в пределах всего списка Array. Searches for an element that matches the conditions defined by the specified predicate, and returns the last occurrence within the entire Array.

Выполняет поиск элемента, удовлетворяющего условиям указанного предиката, и возвращает отсчитываемый от нуля индекс последнего вхождения в диапазоне элементов списка Array, содержащем указанное число элементов и заканчивающемся элементом с заданным индексом. Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the last occurrence within the range of elements in the Array that contains the specified number of elements and ends at the specified index.

Выполняет поиск элемента, удовлетворяющего условиям указанного предиката, и возвращает отсчитываемый от нуля индекс последнего вхождения в диапазоне элементов списка Array, начиная с первого элемента и заканчивая элементом с заданным индексом. Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the last occurrence within the range of elements in the Array that extends from the first element to the specified index.

Выполняет поиск элемента, удовлетворяющего условиям указанного предиката, и возвращает отсчитываемый от нуля индекс последнего найденного вхождения в пределах всего списка Array. Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the last occurrence within the entire Array.

Выполняет указанное действие с каждым элементом указанного массива. Performs the specified action on each element of the specified array.

Возвращает перечислитель IEnumerator для словаря Array. Returns an IEnumerator for the Array.

Служит хэш-функцией по умолчанию. Serves as the default hash function.

(Унаследовано от Object) GetLength(Int32)

Получает 32-разрядное целое число, представляющее количество элементов в заданном измерении массива Array. Gets a 32-bit integer that represents the number of elements in the specified dimension of the Array.

Возвращает 64-разрядное целое число, представляющее количество элементов в заданном измерении массива Array. Gets a 64-bit integer that represents the number of elements in the specified dimension of the Array.

Получает Индекс первого элемента заданного измерения в массиве. Gets the index of the first element of the specified dimension in the array.

Возвращает объект Type для текущего экземпляра. Gets the Type of the current instance.

(Унаследовано от Object) GetUpperBound(Int32)

Получает Индекс последнего элемента заданного измерения в массиве. Gets the index of the last element of the specified dimension in the array.

Возвращает значение, хранящееся в указанной позиции одномерного массива Array. Gets the value at the specified position in the one-dimensional Array. Индекс задается как 32-разрядное целое число. The index is specified as a 32-bit integer.

Получает значение в заданной позиции двухмерного массива Array. Gets the value at the specified position in the two-dimensional Array. Индексы задаются в виде 32-разрядных целых чисел. The indexes are specified as 32-bit integers.

Получает значение, хранящееся в указанной позиции трехмерного массива Array. Gets the value at the specified position in the three-dimensional Array. Индексы задаются в виде 32-битовых целых чисел. The indexes are specified as 32-bit integers.

Получает значение, находящееся в указанной позиции многомерного массива Array. Gets the value at the specified position in the multidimensional Array. Индексы задаются как массив 32-битовых целых чисел. The indexes are specified as an array of 32-bit integers.

Получает значение, хранящееся в указанной позиции одномерного массива Array. Gets the value at the specified position in the one-dimensional Array. Индекс задается как 64-битовое целое число. The index is specified as a 64-bit integer.

Получает значение в заданной позиции двумерного массива Array. Gets the value at the specified position in the two-dimensional Array. Индексы задаются в виде 64-разрядных целых чисел. The indexes are specified as 64-bit integers.

Получает значение, хранящееся в указанной позиции трехмерного массива Array. Gets the value at the specified position in the three-dimensional Array. Индексы задаются в виде 64-разрядных целых чисел. The indexes are specified as 64-bit integers.

Получает значение, хранящееся в указанной позиции многомерного массива Array. Gets the value at the specified position in the multidimensional Array. Индексы задаются как массив 64-разрядных целых чисел. The indexes are specified as an array of 64-bit integers.

Выполняет поиск указанного объекта внутри всего одномерного массива и возвращает индекс его первого вхождения. Searches for the specified object and returns the index of its first occurrence in a one-dimensional array.

Выполняет поиск указанного объекта в диапазоне элементов одномерного массива и возвращает индекс первого найденного совпадения. Searches for the specified object in a range of elements of a one-dimensional array, and returns the index of its first occurrence. Диапазон начинается с указанного индекса и заканчивается концом массива. The range extends from a specified index to the end of the array.

Выполняет поиск указанного объекта в диапазоне элементов одномерного массива и возвращает индекс первого найденного совпадения. Searches for the specified object in a range of elements of a one-dimensional array, and returns the index of ifs first occurrence. Диапазон расширяется от указанного индекса заданного числа элементов. The range extends from a specified index for a specified number of elements.

Выполняет поиск указанного объекта внутри всего одномерного массива и возвращает индекс его первого вхождения. Searches for the specified object and returns the index of its first occurrence in a one-dimensional array.

Выполняет поиск указанного объекта в диапазоне элементов одномерного массива и возвращает индекс первого найденного совпадения. Searches for the specified object in a range of elements of a one dimensional array, and returns the index of its first occurrence. Диапазон начинается с указанного индекса и заканчивается концом массива. The range extends from a specified index to the end of the array.

Выполняет поиск указанного объекта в диапазоне элементов одномерного массива и возвращает индекс первого найденного совпадения. Searches for the specified object in a range of elements of a one-dimensional array, and returns the index of its first occurrence. Диапазон расширяется от указанного индекса заданного числа элементов. The range extends from a specified index for a specified number of elements.

Инициализирует каждый элемент массива Array типа значения путем вызова конструктора без параметров для типа значений. Initializes every element of the value-type Array by calling the parameterless constructor of the value type.

Выполняет поиск заданного объекта и возвращает индекс его последнего вхождения внутри всего одномерного массива Array. Searches for the specified object and returns the index of the last occurrence within the entire one-dimensional Array.

Выполняет поиск указанного объекта и возвращает индекс его последнего вхождения в диапазоне элементов одномерного массива Array, начинающемся с первого элемента и заканчивающемся элементом с заданным индексом. Searches for the specified object and returns the index of the last occurrence within the range of elements in the one-dimensional Array that extends from the first element to the specified index.

Выполняет поиск указанного объекта и возвращает индекс последнего вхождения в диапазоне элементов одномерного массива Array, содержащем указанное число элементов и заканчивающемся элементом с заданным индексом. Searches for the specified object and returns the index of the last occurrence within the range of elements in the one-dimensional Array that contains the specified number of elements and ends at the specified index.

Выполняет поиск указанного объекта и возвращает индекс последнего вхождения во всем массиве Array. Searches for the specified object and returns the index of the last occurrence within the entire Array.

Выполняет поиск указанного объекта и возвращает индекс последнего вхождения в диапазоне элементов массива Array, начиная с первого элемента и заканчивая элементом с заданным индексом. Searches for the specified object and returns the index of the last occurrence within the range of elements in the Array that extends from the first element to the specified index.

Выполняет поиск указанного объекта и возвращает индекс последнего вхождения в диапазоне элементов массива Array, содержащем указанное число элементов и заканчивающемся в позиции с указанным индексом. Searches for the specified object and returns the index of the last occurrence within the range of elements in the Array that contains the specified number of elements and ends at the specified index.

Создает неполную копию текущего объекта Object. Creates a shallow copy of the current Object.

(Унаследовано от Object) Resize (T[], Int32)

Изменяет количество элементов в одномерном массиве до указанной величины. Changes the number of elements of a one-dimensional array to the specified new size.

Изменяет порядок элементов во всем одномерном массиве Array на обратный. Reverses the sequence of the elements in the entire one-dimensional Array.

Изменяет последовательность элементов в диапазоне элементов одномерного массива Array на обратную. Reverses the sequence of the elements in a range of elements in the one-dimensional Array.

Присваивает значение элементу, находящемуся в указанной позиции одномерного массива Array. Sets a value to the element at the specified position in the one-dimensional Array. Индекс задается как 32-битовое целое число. The index is specified as a 32-bit integer.

Присваивает значение элементу, находящемуся в указанной позиции двухмерного массива Array. Sets a value to the element at the specified position in the two-dimensional Array. Индексы задаются в виде 32-битовых целых чисел. The indexes are specified as 32-bit integers.

Присваивает значение элементу, находящемуся в указанной позиции трехмерного массива Array. Sets a value to the element at the specified position in the three-dimensional Array. Индексы задаются в виде 32-битовых целых чисел. The indexes are specified as 32-bit integers.

Присваивает значение элементу, находящемуся в указанной позиции многомерного массива Array. Sets a value to the element at the specified position in the multidimensional Array. Индексы задаются как массив 32-битовых целых чисел. The indexes are specified as an array of 32-bit integers.

Присваивает значение элементу, находящемуся в указанной позиции одномерного массива Array. Sets a value to the element at the specified position in the one-dimensional Array. Индекс задается как 64-битовое целое число. The index is specified as a 64-bit integer.

Присваивает значение элементу, находящемуся в указанной позиции двухмерного массива Array. Sets a value to the element at the specified position in the two-dimensional Array. Индексы задаются в виде 64-разрядных целых чисел. The indexes are specified as 64-bit integers.

Присваивает значение элементу, находящемуся в указанной позиции трехмерного массива Array. Sets a value to the element at the specified position in the three-dimensional Array. Индексы задаются в виде 64-разрядных целых чисел. The indexes are specified as 64-bit integers.

Присваивает значение элементу, находящемуся в указанной позиции многомерного массива Array. Sets a value to the element at the specified position in the multidimensional Array. Индексы задаются как массив 64-разрядных целых чисел. The indexes are specified as an array of 64-bit integers.

Сортирует элементы во всем одномерном массиве Array, используя реализацию интерфейса IComparable каждого элемента массива Array. Sorts the elements in an entire one-dimensional Array using the IComparable implementation of each element of the Array.

Сортирует пару одномерных объектов Array (один содержит ключи, а другой — соответствующие элементы) по ключам в первом массиве Array, используя реализацию интерфейса IComparable каждого ключа. Sorts a pair of one-dimensional Array objects (one contains the keys and the other contains the corresponding items) based on the keys in the first Array using the IComparable implementation of each key.

Сортирует пару одномерных объектов Array (один содержит ключи, а другой — соответствующие элементы) по ключам в первом массиве Array, используя указанный интерфейс IComparer. Sorts a pair of one-dimensional Array objects (one contains the keys and the other contains the corresponding items) based on the keys in the first Array using the specified IComparer.

Сортирует диапазон элементов в паре одномерных объектов Array (один содержит ключи, а другой — соответствующие элементы) по ключам в первом массиве Array, используя реализацию интерфейса IComparable каждого ключа. Sorts a range of elements in a pair of one-dimensional Array objects (one contains the keys and the other contains the corresponding items) based on the keys in the first Array using the IComparable implementation of each key.

Сортирует диапазон элементов в паре одномерных объектов Array (один содержит ключи, а другой — соответствующие элементы) по ключам в первом массиве Array, используя указанный интерфейс IComparer. Sorts a range of elements in a pair of one-dimensional Array objects (one contains the keys and the other contains the corresponding items) based on the keys in the first Array using the specified IComparer.

Сортирует элементы в одномерном массиве Array, используя указанный интерфейс IComparer. Sorts the elements in a one-dimensional Array using the specified IComparer.

Сортирует элементы в диапазоне элементов одномерного массива Array с помощью реализации интерфейса IComparable каждого элемента массива Array. Sorts the elements in a range of elements in a one-dimensional Array using the IComparable implementation of each element of the Array.

Сортирует элементы в диапазоне элементов одномерного массива Array, используя указанный интерфейс IComparer. Sorts the elements in a range of elements in a one-dimensional Array using the specified IComparer.

Сортирует элементы во всем массиве Array, используя реализацию универсального интерфейса IComparable каждого элемента массива Array. Sorts the elements in an entire Array using the IComparable generic interface implementation of each element of the Array.

Сортирует элементы массива Array с использованием указанного объекта Comparison . Sorts the elements in an Array using the specified Comparison .

Сортирует элементы в массиве Array, используя указанный универсальный интерфейс IComparer . Sorts the elements in an Array using the specified IComparer generic interface.

Сортирует элементы в диапазоне элементов массива Array, используя реализацию универсального интерфейса IComparable каждого элемента массива Array. Sorts the elements in a range of elements in an Array using the IComparable generic interface implementation of each element of the Array.

Сортирует элементы в диапазоне элементов массива Array, используя указанный универсальный интерфейс IComparer . Sorts the elements in a range of elements in an Array using the specified IComparer generic interface.

Сортирует пару объектов Array (один содержит ключи, а другой — соответствующие элементы) по ключам в первом массиве Array, используя реализацию универсального интерфейса IComparable каждого ключа. Sorts a pair of Array objects (one contains the keys and the other contains the corresponding items) based on the keys in the first Array using the IComparable generic interface implementation of each key.

Сортирует пару объектов Array (один содержит ключи, а другой — соответствующие элементы) по ключам в первом массиве Array, используя указанный универсальный интерфейс IComparer . Sorts a pair of Array objects (one contains the keys and the other contains the corresponding items) based on the keys in the first Array using the specified IComparer generic interface.

Сортирует диапазон элементов в паре объектов Array (один содержит ключи, а другой — соответствующие элементы) по ключам в первом массиве Array, используя реализацию универсального интерфейса IComparable каждого ключа. Sorts a range of elements in a pair of Array objects (one contains the keys and the other contains the corresponding items) based on the keys in the first Array using the IComparable generic interface implementation of each key.

Сортирует диапазон элементов в паре объектов Array (один содержит ключи, а другой — соответствующие элементы) по ключам в первом массиве Array, используя указанный универсальный интерфейс IComparer . Sorts a range of elements in a pair of Array objects (one contains the keys and the other contains the corresponding items) based on the keys in the first Array using the specified IComparer generic interface.

Возвращает строку, представляющую текущий объект. Returns a string that represents the current object.

(Унаследовано от Object) TrueForAll (T[], Predicate )

Определяет, все ли элементы массива удовлетворяют условиям указанного предиката. Determines whether every element in the array matches the conditions defined by the specified predicate.

Явные реализации интерфейса

Получает число элементов, содержащихся в интерфейсе Array. Gets the number of elements contained in the Array.

Получает значение, определяющее, является ли доступ к коллекции Array синхронизированным (потокобезопасным). Gets a value that indicates whether access to the Array is synchronized (thread safe).

Получает объект, с помощью которого можно синхронизировать доступ к коллекции Array. Gets an object that can be used to synchronize access to the Array.

При вызове этого метода всегда возникает исключение NotSupportedException. Calling this method always throws a NotSupportedException exception.

Удаляет все элементы из коллекции IList. Removes all items from the IList.

Определяет, входит ли элемент в коллекцию IList. Determines whether an element is in the IList.

Определяет индекс заданного элемента в списке IList. Determines the index of a specific item in the IList.

Вставляет элемент в список IList по указанному индексу. Inserts an item to the IList at the specified index.

Возвращает значение, показывающее, имеет ли объект Array фиксированный размер. Gets a value that indicates whether the Array has a fixed size.

Возвращает значение, которое определяет, является ли коллекция Array доступной только для чтения. Gets a value that indicates whether the Array is read-only.

Возвращает или задает элемент по указанному индексу. Gets or sets the element at the specified index.

Удаляет первое вхождение указанного объекта из коллекции IList. Removes the first occurrence of a specific object from the IList.

Удаляет элемент IList, расположенный по указанному индексу. Removes the IList item at the specified index.

Определяет позицию текущего объекта коллекции относительно другого объекта в порядке сортировки (находится перед другим объектов, на одной позиции с ним или после другого объекта). Determines whether the current collection object precedes, occurs in the same position as, or follows another object in the sort order.

Определяет, равен ли объект текущему экземпляру. Determines whether an object is equal to the current instance.

Возвращает хэш-код текущего экземпляра. Returns a hash code for the current instance.

Методы расширения

Приводит элементы объекта IEnumerable к заданному типу. Casts the elements of an IEnumerable to the specified type.

Выполняет фильтрацию элементов объекта IEnumerable по заданному типу. Filters the elements of an IEnumerable based on a specified type.

Позволяет осуществлять параллельный запрос. Enables parallelization of a query.

Преобразовывает коллекцию IEnumerable в объект IQueryable. Converts an IEnumerable to an IQueryable.

Применяется к


Потокобезопасность

Открытые статические ( Shared в Visual Basic) члены этого типа являются потокобезопасными. Public static ( Shared in Visual Basic) members of this type are thread safe. Потокобезопасность членов экземпляров не гарантируется. Any instance members are not guaranteed to be thread safe.

Эта реализация не предоставляет синхронизированную (потокобезопасную) оболочку для Array, однако классы .NET Framework, основанные на Array, предоставляют собственную синхронизированную версию коллекции с помощью свойства SyncRoot. This implementation does not provide a synchronized (thread safe) wrapper for an Array; however, .NET Framework classes based on Array provide their own synchronized version of the collection using the SyncRoot property.

Перечисление коллекции не является потокобезопасной процедурой. Enumerating through a collection is intrinsically not a thread-safe procedure. Даже если коллекция синхронизирована, другие потоки могут ее изменить, что приведет к тому, что перечислитель создаст исключение. Even when a collection is synchronized, other threads can still modify the collection, which causes the enumerator to throw an exception. Для обеспечения потокобезопасности при перечислении можно либо заблокировать коллекцию на все время перечисления, либо перехватывать исключения, возникающие в результате изменений, внесенных другими потоками. To guarantee thread safety during enumeration, you can either lock the collection during the entire enumeration or catch the exceptions resulting from changes made by other threads.

Что такое код in_array

3 сентября 2011

Такая функция как in_array используется очень часто. Однако, есть особенности, на которые сегодня обратил моё внимание aktuba, дав мне вот такой кусочек кода:

Работает он немного неожиданно — выдаёт true . Всё дело в том, что строка three приводится к типу элемента массива перед сравнением. В нашем случае интересно приведение к числу.

Если такое поведение нежелательно, можно заставить сравнивать элементы ещё и по типу, передав третий параметр:

Комментарии RSS по email OK

Ага, такой вопрос есть в тесте от мамбы =) Ещё из интересностей PHP. Есть приватный или защищённый метод класса. Он него инстанциируется объект. К этому методу может получить доступ другой инстанцированный объект от этого же класса =) Много узнал, когда готовился к Zend Certification. =)

Не совсем вменяемый пример, имхо. Чаще всего бывает вот так:

Вот вам тоже задачка:

Есть еще один интересный пример, хотя он и описан в документации, но все же. Нельзя проверять строки на пустоту функцией empty();

NickSun, по логике вещей должны переиндексироваться неассоциативные ключи массива.

holdmann

Ну это как раз стандартное поведение.
Все это выведет true

  • «» (an empty string)
  • 0 (0 as an integer)
  • 0.0 (0 as a float)
  • «0» (0 as a string)
  • NULL
  • FALSE
  • array() (an empty array)
  • var $var; (a variable declared, but without a value in a class)

Я понимаю, что это стандартное поведение, впрочем как и в случае NickSun’a. Как это часто бывает, из-за банальной невнимательности, возникает трудноотлавливаемая ошибка.

Поэтому надо либо на 100% понимать что делаешь, либо использовать более подходящие под конкретный тип данных функции.

http://phplens.com/phpeverywhere/node/view/52 (6 пункт).

@stamm Не совсем понял про ООП. Поясни еще раз, плиз!

@dV, имеется ввиду, что в PHP все private и protected методы по умолчанию являются class friend’ами в стиле C++ для своего же класса.

Вот этот код отработает верно, без ошибок и выдаст двойку, а затем единицу:

Комментарий: testMethod одного экземпляра класса вызывает testMethod другого экземпляра класса, игнорируя права доступа (private, в данном случае).

@resurtm К сожелению, PHP не дает возможности вызывать защищенный метод класса из контекста другога класса, если они ИМПЛЕМЕНТИРУЮТ один интерфейс. Более того, если они наследуют общий класс, все равно не помагает объкету одного класса вызывать защищенный метод объекта другога класса! Только и только если объекты принадлежат ОДНОМУ классу, либо объект, кот вызывает защищенный метод может принадлежать классу, кот ОБЯЗАТЕЛЬНО НАСЛЕДУЕТСЯ от класса того объекта, чей метод вызывает.

Я много думал о friend-методах в стиле С++ для PHP, когда рассуждал о парретне State. В случае смены состояний у контекста конкретным состоянием, этот метод должен быть защищенным и friend’ом конеткрному состоянию (общему интерфейсу всех конкретных состояний). Другими словами, когда клиент использует контекст он не может явно менять состояние контекста, но котекст должен задавать другое состояние контексту.

Может быть кто-нибудь может внятно объяснить эту особенность и её применение? Еще лучше, если поделитесь ссылкой.

Практического применения получается, что и нет, если учесть, что для интерфейсов и/или наследования это не работает.

По поводу отсутствия friend в PHP — согласен, немного напрягает. :(

Касательно моего комментария, конечно же я имел ввиду:

Другими словами, когда клиент использует контекст он не может явно менять состояние контекста, но ОДНО СОСТОЯНИЕ должено задавать ДРУГОЕ СОСТОЯНИЕ контексту.

Про модификаторы я как-то тоже озадачивался.

Натыкался на такое в switch значений из GET

поэтому перешёл с него на if ($value === 1) .

Хотелось бы поднять тему из старого топика

Вызываем:

Получем: Strict standards: Non-static method A::getClassName() should not be called statically Fatal error: Using $this when not in object context

Вызываем:

Получем: Strict standards: Non-static method A::getClassName() should not be called statically, assuming $this from incompatible context B

PHP говорит, что конечно неправильно вызывать нестатический метод статически, да и $this использует не из подходящего контекста, НО ответ дает как буд-то класс B наследуется от A, WTF. Я напомню, что E_STRICT войдет в E_ALL лишь в PHP 6!

Как мне кажется, это совершенно недопустимое поведение. У кого-нить есть мысли на этот счет?

dV, интерпретатор пишет, что нестатический метод можно вызывать только в контексте класса, к которому он относится. $this это магичная ссылка на экземпляр класса, в котором метод определен. Соответственно, интерпретатор находит контекст в виде экземпляра класса B, но не находит A. Поскольку классы в совершенно разных деревьях — не содержат общего кода — то возникает ошибка, что метод вызывается вне контекста.

Почему требуется родной контекст? Ровно по тому же принципу, как болт м8 не сможет держать гайку м6. Экземпляр обьекта — это область памяти, содержащая описанные классом данные. Например,

Экземпляр будет занимать 32бита (int32)+ 8 * 8 бит (char8)+ 32бит(ссылка на описание класса). описание класса будет просто хранить описание своих переменных, типа name это int, длиной 32 бита, отступ 0 бит, и т.п.

Когда класс наследуется и расширяется, этот участок памяти будет расширен новыми переменными, и расширится описание обьекта. Что делает с этим интерпретатор, когда пытается вызвать класс A в контексте класса B? Просто смотрит описание класса текущего контекста — т.е класса B — и сравнивает ссылку на описание класса контекста с ссылкой на класс A. Помимо прочего, проверяется иерархия класса B, на случай, если A есть в этой иерархии. А его нет, вот вам и стрикт еррор.

Я отлично понимаю почему так происходит, меня удивляет, что эта ошибка уровня E_STRICT. Я видел много программистов, кот пишут код c error_reporting E_ALL.

Если угодно, это логическая ошибка на уровне языка!

А по теме — ну реально, пример омерзительного интерфейса. Я на работе сталкиваюсь постоянно с кривыми api, которые сознательно портят из-за недостатков языковых средств, что уже вводит в бешенство :@ Посмотрите на тесты к zend sertifier engineer — over 900 вопросов, так или иначе связанными с костылями на уровне стандартной библиотеки.

Мне нравятся статически типизированные языки, и динамические. Но я терпеть не могу эту чертовую магию, связанную с преобразованием типов черт знает по какой логике! Такого, как в c++ совершенно не хочется — просто тронуться можно, пишут библиотеки для type cast. ИМХО, магичная динамическая типизация порождает больше проблем, чем создает.

@dV обоснуйте, почему логическая? Безусловно, может существовать метод, не требующий контекста класса и не являющийся статическим. Тогда компилятор действительно может дать поблажку, и ошибка будет на уровне varning, если не ошибаюсь.

Если существует метод вне контекста класса — то $this в нем неуместен.

Мы вызываем метод класса A из класса B (напомню никак не связанных между собой), но интерпретатор считает, что хоть $this не в своем контектсе, все равно берет неверное значение. И да, при error_reporting E_ALL все работает без ошибок — поэтому логическая ошибка

Представьте, что мы находимся у меня дома. Вы выкидываете ключи от своего дома в форточку, но при этом оказывается, что это мои ключи (потому что ключи в неверном контексте) и это все без ошибок :)

Ух как тема пошла в ход)) И никто не ожидал такого разворота событий))))

PHP, если in_array() как получить ключ?

Борьба с крошечной проблемой.

У меня есть массив:

Я проверяю, установлено ли заданное значение в массиве.

Дело в том, что когда он находит значение 5 в массиве, мне действительно нужен ключ для работы в моем «делать что-то».

В этом случае мне нужно установить:

(ключ от найденного значения in_array).

Если вам нужен только ключ первого совпадения, используйте array_search() :

Если вам нужны ключи всех записей, которые соответствуют определенному значению, используйте array_keys() :

Возможно, вы захотите использовать array_search вместо этого, который возвращает false, если значение не найдено и индекс, если значение найдено. Ознакомьтесь с описанием здесь

Вы можете попробовать

Таким образом, вы знаете, что он существует, и если он этого не делает, он не вызывает уведомления, предупреждения или фатальные ошибки script в зависимости от того, что вы делаете с этим ключом после этого.

На случай, если кому-то это нужно в массиве массивов. Мой случай был такой:

У меня был такой массив:

И еще один такой (массив объектов):

Как OP, я должен был «что-то сделать» (использовать значения в HTML-шаблоне php, мой случай Laravel с блейдом) с ключом, где какое-то значение было в массиве. Для моего кода я должен был использовать это:

Справочник по PHP : Функции работы с данными : Работа с массивами : Ключи и значения

смотрим также
    По материалам: Мартино пока не видит Икарди в сборной Аргентины.

Материал из Справочник Web-языков

Содержание

array_flip

Меняет местами индексы и значения массива.

Эта функция «пробегает» по массиву и меняет местами его ключи и значения. Исходный массив arr не изменяется, а результирующий массив просто возвращается. Если в массиве присутствовало несколько элементов с одинаковыми значениями, учитываться будет только последний из них.

Значения массива arr должны быть либо целыми числами, либо строковыми значениями. Иначе пара ключ / значение не будут обработаны.

Функция array_flip() возвратит FALSE, если обработка массива вызвала ошибку.

Пример использования функции array_flip():

Пример использования функции array_flip():

многократное повторение значения

Приведенный выше пример выведет следующее:

Функция поддерживается PHP 4, PHP 5

array_keys

Возвращает список из ключей массива.

Функция возвращает массив, значениями которого являются все строковые и числовые ключи массива arr. Если задан необязательный параметр search_value, то она вернет только те ключи, которым соответствуют значению search_value.

Пример испольльзования функции array_keys():

Приведенный выше пример выведет следующее:

Функция array_keys() появилась в PHP 4.

Ее эквивалент для PHP 3:

Функция поддерживается PHP 4, PHP 5

array_values

Удаление ассоциативных индексов массива.

Функция array_values() возвращает список всех значений в ассоциативном массиве arr. При этом она заменяет все строковые ключи на числовые.

Пример использования функции array_values():

Этот пример выведет:

Функция поддерживается PHP 4, PHP 5

in_array

Осуществляет проверку массива на наличие значения.

Функция in_array() возвратит TRUE, если в массиве haystack содержится элемент со значением needle, и FALSE в противном случае.

Если установить третий необязательный параметр strict в значение TRUE, то функция in_array() при проверке также будет сравнивать типы значений.


Замечание: Если параметр needle является строкой, то при сравнении регистр символов учитывается.

Замечание: В PHP версии ниже 4.2.0 параметр needle не мог быть массивом.

Пример использования функции in_array():

Второе условие не сработает, т.к. поиск в массиве идет с учетом регистра.

Пример использования функции in_array(): Использование параметра strict

Функция поддерживается PHP 4, PHP 5

array_count_values

Возвращает количество значений массива.

array array_count_values(array arr)

Эта функция подсчитывает, сколько раз каждое значение встречается в массиве arr, и возвращает ассоциативный массив с ключами — элементами массива и значениями — количеством повторов этих элементов. Иными словами, функция array_count_values() подсчитывает частоту появления значений в массиве arr.

Пример использования функции array_count_values():

Пример выведет следующее:

Функция поддерживается PHP 4, PHP 5

sizeof

Возвращает число элементов массива.

Функция sizeof() возвращает количество элементов в массиве arr на подобие действия функции count().

count

Возвращает число элементов в массиве или объекте.

Функция count() возвращает число элементов в массиве или объекте var. В случае, если var — скалярная переменная, то функция возвращает 1, если такая переменная существует, или 0, если такой переменной нет.

Надо отметить, что 0 возвращается и тогда, когда указан массив, не содержащий элементов (NULL).

Если задан необязательный параметр mode, то будет подсчитано общее количество элементов в массиве. Это может быть полезно при нахождении количества элементов в многомерных массивах.

Пример использования функции count():

Пример использования функции count(): (PHP >= 4.2.0)

Функция поддерживается PHP 3, PHP 4, PHP 5

array_sum

Возвращает сумму всех элементов массива.

Функция array_sum() возвращает сумму всех числовых элементов массива. От типа значений в массиве зависит тип возвращаемого числа (integer или float).

Пример использования функции array_sum():

Этот пример выведет следующее:

Функция поддерживается PHP 4 >=4.0.4, PHP 5

array_rand

Производит случайную выборку индексов массива.

Функция array_rand() будет полезной, если вы хотите выбрать одно или несколько случайных значений из массива. Эта функция возвращает в массиве выбранные случайным образом индексы элементов массива arr.

Аргумент num_req указывает число возвращаемых индексов. В случае, если выбирается один элемент, то функция array_rand() возвратит случайный ключ в виде значения.

Пример использования функции array_rand():

Функция поддерживается PHP 4, PHP 5

array_change_key_case

Функция устанавливает значения ключей массива в верхний или нижний регистр.

Функция array_change_key_case() возвращает исходный массив arr, ключи которого преобразованы в верхний или нижний регистр.

Необязательный параметр registr может принимать следующие значения:

  • CASE_LOWER — все ключи массива преобразуются в нижний регистр (значение по умолчанию);
  • CASE_UPPER — в верхний регистр.

Данная функция не изменяет ключи, состоящие из чисел.

Пример использования функции array_change_key_case():

Пример выведет следующее:

Функция поддерживается PHP 4 >= 4.2.0, PHP 5

array_combine

Функция объединяет два массива, причем значения первого становяться ключами, а значения второго — значениями.

Функция array_combine() возвращает массив, ключами которого являются значения массива keys, а значениями — значения массива values.

Функция возвратит FALSE, если размерность массивов keys и values не совпадают, или эти массивы не содержат значений.

Пример использования функции array_combine():

Пример выведет следующее:

Функция поддерживается PHP 5

array_key_exists

Проверка существования заданного ключа в массиве.

Функция array_key_exists() возвратит TRUE, если в массиве search присутствует элемент с индексом key.

В противном случае возвратит FALSE.

Пример использования функции array_key_exists():

В PHP 4.0.6. имя этой функции key_exists().

Функция поддерживается PHP 4 >= 4.0.1, PHP 5

Что такое код in_array

3 сентября 2011

Такая функция как in_array используется очень часто. Однако, есть особенности, на которые сегодня обратил моё внимание aktuba, дав мне вот такой кусочек кода:

Работает он немного неожиданно — выдаёт true . Всё дело в том, что строка three приводится к типу элемента массива перед сравнением. В нашем случае интересно приведение к числу.

Если такое поведение нежелательно, можно заставить сравнивать элементы ещё и по типу, передав третий параметр:

Комментарии RSS по email OK

Ага, такой вопрос есть в тесте от мамбы =) Ещё из интересностей PHP. Есть приватный или защищённый метод класса. Он него инстанциируется объект. К этому методу может получить доступ другой инстанцированный объект от этого же класса =) Много узнал, когда готовился к Zend Certification. =)

Не совсем вменяемый пример, имхо. Чаще всего бывает вот так:

Вот вам тоже задачка:

Есть еще один интересный пример, хотя он и описан в документации, но все же. Нельзя проверять строки на пустоту функцией empty();

NickSun, по логике вещей должны переиндексироваться неассоциативные ключи массива.

holdmann

Ну это как раз стандартное поведение.
Все это выведет true

  • «» (an empty string)
  • 0 (0 as an integer)
  • 0.0 (0 as a float)
  • «0» (0 as a string)
  • NULL
  • FALSE
  • array() (an empty array)
  • var $var; (a variable declared, but without a value in a class)

Я понимаю, что это стандартное поведение, впрочем как и в случае NickSun’a. Как это часто бывает, из-за банальной невнимательности, возникает трудноотлавливаемая ошибка.

Поэтому надо либо на 100% понимать что делаешь, либо использовать более подходящие под конкретный тип данных функции.

http://phplens.com/phpeverywhere/node/view/52 (6 пункт).

@stamm Не совсем понял про ООП. Поясни еще раз, плиз!

@dV, имеется ввиду, что в PHP все private и protected методы по умолчанию являются class friend’ами в стиле C++ для своего же класса.

Вот этот код отработает верно, без ошибок и выдаст двойку, а затем единицу:

Комментарий: testMethod одного экземпляра класса вызывает testMethod другого экземпляра класса, игнорируя права доступа (private, в данном случае).

@resurtm К сожелению, PHP не дает возможности вызывать защищенный метод класса из контекста другога класса, если они ИМПЛЕМЕНТИРУЮТ один интерфейс. Более того, если они наследуют общий класс, все равно не помагает объкету одного класса вызывать защищенный метод объекта другога класса! Только и только если объекты принадлежат ОДНОМУ классу, либо объект, кот вызывает защищенный метод может принадлежать классу, кот ОБЯЗАТЕЛЬНО НАСЛЕДУЕТСЯ от класса того объекта, чей метод вызывает.

Я много думал о friend-методах в стиле С++ для PHP, когда рассуждал о парретне State. В случае смены состояний у контекста конкретным состоянием, этот метод должен быть защищенным и friend’ом конеткрному состоянию (общему интерфейсу всех конкретных состояний). Другими словами, когда клиент использует контекст он не может явно менять состояние контекста, но котекст должен задавать другое состояние контексту.

Может быть кто-нибудь может внятно объяснить эту особенность и её применение? Еще лучше, если поделитесь ссылкой.

Практического применения получается, что и нет, если учесть, что для интерфейсов и/или наследования это не работает.

По поводу отсутствия friend в PHP — согласен, немного напрягает. :(

Касательно моего комментария, конечно же я имел ввиду:

Другими словами, когда клиент использует контекст он не может явно менять состояние контекста, но ОДНО СОСТОЯНИЕ должено задавать ДРУГОЕ СОСТОЯНИЕ контексту.

Про модификаторы я как-то тоже озадачивался.

Натыкался на такое в switch значений из GET

поэтому перешёл с него на if ($value === 1) .

Хотелось бы поднять тему из старого топика

Вызываем:

Получем: Strict standards: Non-static method A::getClassName() should not be called statically Fatal error: Using $this when not in object context

Вызываем:

Получем: Strict standards: Non-static method A::getClassName() should not be called statically, assuming $this from incompatible context B

PHP говорит, что конечно неправильно вызывать нестатический метод статически, да и $this использует не из подходящего контекста, НО ответ дает как буд-то класс B наследуется от A, WTF. Я напомню, что E_STRICT войдет в E_ALL лишь в PHP 6!

Как мне кажется, это совершенно недопустимое поведение. У кого-нить есть мысли на этот счет?

dV, интерпретатор пишет, что нестатический метод можно вызывать только в контексте класса, к которому он относится. $this это магичная ссылка на экземпляр класса, в котором метод определен. Соответственно, интерпретатор находит контекст в виде экземпляра класса B, но не находит A. Поскольку классы в совершенно разных деревьях — не содержат общего кода — то возникает ошибка, что метод вызывается вне контекста.

Почему требуется родной контекст? Ровно по тому же принципу, как болт м8 не сможет держать гайку м6. Экземпляр обьекта — это область памяти, содержащая описанные классом данные. Например,

Экземпляр будет занимать 32бита (int32)+ 8 * 8 бит (char8)+ 32бит(ссылка на описание класса). описание класса будет просто хранить описание своих переменных, типа name это int, длиной 32 бита, отступ 0 бит, и т.п.

Когда класс наследуется и расширяется, этот участок памяти будет расширен новыми переменными, и расширится описание обьекта. Что делает с этим интерпретатор, когда пытается вызвать класс A в контексте класса B? Просто смотрит описание класса текущего контекста — т.е класса B — и сравнивает ссылку на описание класса контекста с ссылкой на класс A. Помимо прочего, проверяется иерархия класса B, на случай, если A есть в этой иерархии. А его нет, вот вам и стрикт еррор.

Я отлично понимаю почему так происходит, меня удивляет, что эта ошибка уровня E_STRICT. Я видел много программистов, кот пишут код c error_reporting E_ALL.

Если угодно, это логическая ошибка на уровне языка!

А по теме — ну реально, пример омерзительного интерфейса. Я на работе сталкиваюсь постоянно с кривыми api, которые сознательно портят из-за недостатков языковых средств, что уже вводит в бешенство :@ Посмотрите на тесты к zend sertifier engineer — over 900 вопросов, так или иначе связанными с костылями на уровне стандартной библиотеки.

Мне нравятся статически типизированные языки, и динамические. Но я терпеть не могу эту чертовую магию, связанную с преобразованием типов черт знает по какой логике! Такого, как в c++ совершенно не хочется — просто тронуться можно, пишут библиотеки для type cast. ИМХО, магичная динамическая типизация порождает больше проблем, чем создает.

@dV обоснуйте, почему логическая? Безусловно, может существовать метод, не требующий контекста класса и не являющийся статическим. Тогда компилятор действительно может дать поблажку, и ошибка будет на уровне varning, если не ошибаюсь.

Если существует метод вне контекста класса — то $this в нем неуместен.

Мы вызываем метод класса A из класса B (напомню никак не связанных между собой), но интерпретатор считает, что хоть $this не в своем контектсе, все равно берет неверное значение. И да, при error_reporting E_ALL все работает без ошибок — поэтому логическая ошибка

Представьте, что мы находимся у меня дома. Вы выкидываете ключи от своего дома в форточку, но при этом оказывается, что это мои ключи (потому что ключи в неверном контексте) и это все без ошибок :)

Ух как тема пошла в ход)) И никто не ожидал такого разворота событий))))

Илон Маск рекомендует:  Что такое код asp aspthreadgateenabled
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL