我有輸入以下代碼:創建數組的數組,然後檢索值
my @resultsArray;
my @dataArray;
while (my ($id, $originLat, $originLng, $compensation) = $sth->fetchrow_array) {
@dataArray = ($id, $originLat, $originLng, $compensation);
print "ID: $id Lat: $originLat Lng: $originLng Compensation: $compensation\n";
print "Data Array: @dataArray\n";
#the above code words.
#I declare
push (@resultsArray, @dataArray);
}
my (@r1, @r2, @r3, @r4);
#issue here
for (@resultsArray) {
@r1 = pop(@resultsArray);
@r2 = pop(@resultsArray);
@r3 = pop(@resultsArray);
@r4 = pop(@resultsArray);
print "ID: $r4[0] Lat: $r3[0] Lng: $r2[0] Compensation: $r1[0]\n";
#@r1 =();
}
上述代碼工作。陣列@dataArray
被壓入@resultsArray
堆棧並分別彈出到@r1, @r2, @r3, @r4
。然而這是可怕的代碼。有沒有更好的方法,更簡潔的方式,線條少,仍然可讀,通常更專業?
我正在尋找提高我的技能。如果我出現這樣的事情,我覺得我可能會成爲一個房間的笑柄。
爲什麼你對每個'@ r1','@ r2','@ r3','@ r4'使用數組?你似乎將它們用作標量。 splice()是你的朋友。要從陣列中取出最後4個元素,可以使用:'@ r' = splice @resultsArray,-4。然後你可以利用$ r [0] .. $ r [3]。 –
這真是太棒了史蒂文。謝謝。削減了我的代碼,使它看起來更好。再次感謝。 – SonOfSeuss