Подкиньте идею по поводу subj. Как различить $a и $b? PHP: <?php $a = array( '0', 1, '2', 3 ); $b = array( '0' => 2, '1' => 3 ); ?> Мне нужно по разному обрабатывать данные массивы в зависимости от формата. Пробовал array_keys, двойной array_flip... Не знаю уж как еще, ничего в голову не приходит. Заранее спасибо!
AterCattus Четкой границы в PHP нет. В твоем примере, например, оба массива - "массивы". Я делаю примерно так: echo array_keys($array)===array_keys(array_keys($array))?"Массив":"Хеш";
Горбунов Олег Нужно знать, был описан просто набор значений или именно хеш. Я специально привел такой пример, что array_keys() выдает в обоих случаях одинаковый результат ( и типы и значения ). Dagdamor Я понимаю, что четко они не разделяются, а проблема стоит. Можно конечно проверить, что все ключи числовые и даны от 0 и до количества-1. Это вариант, но медленный он какой-то. А хороший вариант, чувствует разницу между array( '0', 1, '2', 3 ) и array( '0' => 2, '3' => 1). Вот только === тут, имхо, излишне: и с обоих сторон равенства всегда массивы при корректных входных данных.
AterCattus Я бы не поставил ===, если бы было достаточно ==. Нужно же еще порядок следования ключей проверять. Ре: проблема стоит - смотри: PHP: <?php $array1=array(100, 200, 300); $array2=array(0=>100, 1=>200, 2=>300); Эти два массива во внутреннем представлении в PHP абсолютно идентичны, нет способа их различить. Ну так он работает, что поделать.
Такой вариант в моем случае рассматривается как массив. Я специально написал, Это условие для предложенных массива и хеша выполняется. Ну в общем я разобрался, спасибо. Тема закрыта.