簡體   English   中英

如何在Perl中創建2D數組?

[英]How do I create a 2D array in Perl?

我試圖在Perl中創建一個2d數組

我的代碼:

my @wordsList=();
my @words=();

for ($id=0; $id<=@language.length; $id++)
{

        my $eng = $db->selectall_arrayref("select word from words 
                                                    left outer join language
                                                    on words.languageId = language.languageId
                                                    where words.languageId = $id
                                                    ;");


        foreach $eng(@$eng)
        {   
        my($word) = @$eng;
        $ref_to_Array->[$id][$word] = @words($id,$word);

            }
                return $words($id, $word);
}

$wordsList= NextWords();
print $wordsList;

它返回非...因為我想返回2d數組。

更新

我仍然感到困惑,因為當我執行查詢時,它給了我一個單詞列表,如:

select word from words where language_id = 1 
(1=english, 2 - chinese, 3 - french) 

我正在使用for循環語言,以便從數據庫中獲取所有單詞

問題是我想循環並希望數組自動添加到2d數組。

放置use warnings; use strict; use warnings; use strict; 在你編寫的每個程序的頂部。 這兩個pragma將為你捕獲許多錯誤。

您無法訪問帶有(...)后綴的數組。 該構造用於調用函數mysub(...)$mysubref->(...) 要訪問數組元素,請使用后綴[ index ] 在Perl中,多維數組需要每個級別一對[...] 這是因為2D數組只是一個數組,其中每個元素也是一個數組。

my @array = ([1, 2, 3], [4, 5, 6], [7, 8, 9]);

my $top_left     = $array[0][0];  # 1
my $bottom_right = $array[2][2];  # 9

print "@$_\n" for @array;
1 2 3
4 5 6
7 8 9

您可以在perldoc.perl.org上了解有關Perl數據結構和Perl其余部分的更多信息 以下是一些直接鏈接:

最后, @language.length沒有按照你的想法做到。 它在標量上下文中使用@language ,它的長度為數字,然后將其與length($_)連接起來。 結果表達式就像(scalar @language) . length($_) (scalar @language) . length($_) 由於<=運算符在其參數上強制使用標量上下文,因此您只需編寫$id <= @language 但是,Perl為您提供了一種更自然的方式來編寫這種類型的循環:

for my $id (0 .. @language) {...}

要么

for my $id (0 .. $#language) {...}
如果你的意思是$id < @language因為$language[scalar @language]是一個超出數組末尾的元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM