Различить массив и хеш массив

young

Новичок
Различить массив и хеш массив

PHP:
$arr1 = array(
0 => 1,
1 => 2, 
2 => 3
);
print_r($arr1);
$arr2 = array(1, 2, 3);
print_r($arr2);
Выводит
Array
(
[0] => 1
[1] => 2
[2] => 3
)
Array
(
[0] => 1
[1] => 2
[2] => 3
)
Есть ли способ определить, как был задан массив?
Как хеш-массив (способ $arr1) или как обыкновенный массив ($arr2)
 

trent

Developer
IMHO это одно и то же.. просто заданное разными методами
 

young

Новичок
IMHO это одно и то же.. просто заданное разными методами
Я понимаю что это одно и тоже.
Но вот каким именно методом это задали - это меня и интересует
 

}|{yK

Guest
Автор оригинала: trent
IMHO это одно и то же.. просто заданное разными методами
Ну дак и вопрос как раз в том можно ли определить метод...
ИМХО, очень интересный вопрос... по-моему - нельзя.
 

Said

Guest
а можно еще так:
PHP:
$b = array(1,2,3,'aaa',2 => 'bbb',8);
Array
(
[0] => 1
[1] => 2
[2] => bbb
[3] => aaa
[4] => 8
)

(???)
 

ONK

Пассивист PHPСluba
young, расскажи-ка нам что такое "хеш массив"???? :)

PS ПХП не хранит информацию о методе инициализации переменных, следовательно о способе инициализации узнать невозможно. А самое главно непредставляю где это может понадобиться...
 

Raiser

Guest
Re: Различить массив и хеш массив

Можно массив ключей достать из массива
$keys = array_keys($array);

если $keys не пустой значит в массиве есть ключи и он хеш массив. А если $keys пустой при непустом $array то значит это массив без ключей тоесть обычный..

По моему так.
 

tony2001

TeaM PHPClub
Re: Re: Различить массив и хеш массив

Originally posted by Raiser
$keys = array_keys($array);
если $keys не пустой значит в массиве есть ключи и он хеш массив.
Raiser:
рекомендую попробовать.
результат вас поразит.
 

sapenov

Guest
верно.
то есть в массиве вида:

1 => 'a',
2 => 'b',
3 => 'c'


ключи являются строчными данными.
 

Bloody

Guest
Ну?.. Кто может придумать еще более дурацкий вопрос?..
1) РНР НЕ РАЗЛИЧАЕТ хэш массив или не хэш.
различия такие:
с ключами в виде значений, которые МОГУТ БЫТЬ представлены, как целые числа РНР работает быстрее.
с ключами в виде целых чисел идущих ПО-ПОРЯДКУ РНР работает еще быстрее

Ну, и в качестве припарки: скажите, сильно ли различается array("0" => 1) и array(0 => 1)...
 

Yurik

/dev/null
Что бы вы не задали:
PHP:
$a=array('a','b','c');
$a=array(0=>'a',1=>'b',2=>'c');
$a[0]='a';
$a[1]='b';
$a[2]='c';
$a[]='a';
$a[]='b';
$a[]='c';
внутрення структура хранения массива будет идентична, а данные никогда не таскают за собой метода их создания
скажите, сильно ли различается array("0" => 1) и array(0 => 1)...
ровно настолько насколько отличается (string) от (int)
 

Bocha

Guest
Автор оригинала: Yurik


ровно настолько насколько отличается (string) от (int)
не совсем верно. "0" будет интерпретировано, как 0, а вот "00" будет интерпретировано, как "00", или не с нулем, то тогда "8" --> 8, "08" --> "08"
поэтому это идентично array("0" => 1) и array(0 => 1)...
 

kvn

programmer
не совсем верно. "0" будет интерпретировано, как 0, а вот "00" будет интерпретировано, как "00", или не с нулем, то тогда "8" --> 8, "08" --> "08"
поэтому это идентично array("0" => 1) и array(0 => 1)...
А че вы спорите?
var_dump() вас рассудит...
 
Сверху