Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Получение ключей в скалярном массиве


Автор: Cepin 2.10.2009, 17:15
Собственно казалось бы простая задача, но никак не могу получить ключи из скалярного массива.
keys, each - только для ассоц. массивов.
foreach выдергивает только значения
for - не подходит, т.к. ключи идут не по порядку.

while (my ($key, $value) = @array) - к моему наивному убеждению, о конструкциях перла, такая конструкция не заработала.

Кто что подскажет? Мб надо перевести в ассоциативный массив?

Автор: ginnie 2.10.2009, 17:17
Cepin, можете привести пример массива и что Вы хотите из него получить?

Автор: Cepin 2.10.2009, 17:25
my @array;
$array[10]  = 'visit';
$array[345] = 'condor';
$array[53]  = 'depo';


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

Вот ключи я не могу получить(

Автор: ginnie 2.10.2009, 17:32
Cepin, Вам подойдет?

Код

my @keys = grep {exists $array[$_]} 0..$#array;


Только разумнее использовать хэш. Т.к. для $array[10001] = 1; будет создан массив из 10002 элементов.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)