环境配置:
remix在线编辑器,输入网址:https://remix.ethereum.org/
一、新定义一个合约Array,定义一个二维数组fenshu,uint[2][3] 中的3代表数组中共有三个元素,2代表每个元素中有两个值。具体场景设计:共有A\B\C三个人,两个值分别代表英语成绩和编程成绩,比如第一个元素[60,70]表示,A的英语成绩是60分,编程成绩为70.
pragma solidity^0.5.0;
contract Array{
uint[2][3] public fenshu =[[60,70],[70,75],[80,85]];
}
二、获取二维数组的长度(获取元素个数),可以利用length方法,如图:
pragma solidity^0.5.0;
contract Array{
uint[2][3] public fenshu =[[60,70],[70,75],[80,85]];
function getLength1()public returns(uint){
return fenshu.length;
}
}
三、获取二维数组特定元素的值长度(特定元素中值的个数),还是可以利用length方法,此处我们使用获取第一个元素fenshu[0].length的方法(因为是定长二维数组,所以可以使用fenshu[0]或者fenshu[1]),可以在合约中加入以下方法,合约部署,调用 getLength2函数后,返回数值2,即第一个元素中包含60和70两个值。
function getLength2()public returns(uint){
return fenshu[0].length;
}
四、如果我们想获取数组中所有元素的值的和,比如6个成绩加总,可以采取for循环遍历整个二维数据,具体代码如下。定义add方法,使用i来获取数据的长度,j来获取每个元素中值的个数,通过不断的遍历累加,算得sum为440.
function add()public returns(uint){
uint sum=0;
for(uint i=0;i<fenshu.length;i++){
for (uint j=0;j<fenshu[0].length;j++){
sum+=fenshu[i][j];
}
}
return sum;
}
五、获取数据中的某个元素,具体代码如下,次数定义 getNum()函数,通过返回 fenshu[0][1]来获取二维数组中的元素,0代表第一个元素,1代表第二个值,调用函数后返回数值70.
function getNum()public returns(uint){
return fenshu[0][1];
}