LINUX.ORG.RU

Придумал лишь так:

count(array_diff(array_keys($array), range(0, count($array) - 1))) > 0

разумеется для больших массивов нерационально.

roller ★★★
()
Ответ на: комментарий от roller

а если условие упрощается: численный массив может начинаться только с нуля, а ассоциативный массив не содежит нуля в ключах?

if (array_key_exists(0, $array))

GotDotNet
() автор топика
Ответ на: комментарий от GotDotNet

с этими языками почти не знаком.
в java/groovy дела обстоят отлично, если я правильно понял вопрос.

thevery ★★★★
()
Ответ на: комментарий от GotDotNet

> как обстоят дела в Perl/Ruby/Python

В перле и питоне массив и ассоциативный массив - разные вещи, там такой вопрос просто не встаёт. Про руби напишут ниже.

const86 ★★★★★
()
Ответ на: комментарий от GotDotNet

> как обстоят дела в Perl/Ruby/Python

irb(main):001:0> { "a" => 1, "b" => 2 }.kind_of? Hash
=> true
irb(main):002:0> { "a" => 1, "b" => 2 }.kind_of? Array
=> false

smh ★★★
()
Ответ на: комментарий от smh

> как обстоят дела в Perl/Ruby/Python

>>> d = {'a': 1, 'b': 2}

>>> isinstance(d, dict)

True
>>> isinstance(d, list)

False

vden ★★
()
Ответ на: комментарий от Absurd

Точно.

An array in PHP is actually an ordered map. A map is a type that associates values to keys. This type is optimized for several different uses; it can be treated as an array, list (vector), hash table (an implementation of a map), dictionary, collection, stack, queue, and probably more. As array values can be other arrays, trees and multidimensional arrays are also possible.

portalgun
()
Ответ на: комментарий от Absurd

> По моему в ПХП все массивы ассоциативные.

В этом и прикол :) В принципе, можно проверить, что все ключи в массиве образуют диапазон [0, N] - тогда можно сказать, что он "обычный", а не ассоциативный.

const86 ★★★★★
()
Ответ на: комментарий от thevery

>пхп так убог?

В PHP все массивы - ассоциативные.

KRoN73 ★★★★★
()

>как проверить, является ли массив ассоциативным?

А зачем?

...

Тем более, что смешение ацциоциативных и ииндексных массивов
позволяет здорово облегчать жизнь.
Например:

$fields = array(
    'title',
    'create_time' => 'posted',
    'owner_id' => 'poster',
    'answers'
);

Описание полей объектов в ORM. Если имя свойства объекта и столбца в БД совпадает, 
то пишем просто его, если нет - то 'имя свойства' => 'имя столбца'.

Коротко и наглядно :)

KRoN73 ★★★★★
()
Ответ на: комментарий от GotDotNet

>if (array_key_exists(0, $array))

isset($array[0]) не проще? :)

KRoN73 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.