Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 双阵列对应_Arrays_Tcl - Fatal编程技术网

Arrays 双阵列对应

Arrays 双阵列对应,arrays,tcl,Arrays,Tcl,我刚刚发现自己在Tcl中有两个阵列 我得到了$W\u数组和$p\u数组 我需要遍历一个数组,而不知道每个数组的大小,并且只在两个数组都有值时执行命令。是的,阵列长度可能不同 最好的方法是什么?不确定“两个数组的值”到底是什么意思,但tcl的foreach支持一次迭代多个数组。。。所以你可以说。 foreach w$w_数组p$p_数组{ 如果{$w==$val&&$p==$val}{ ... } } 当数组长度不相同时,foreach将返回最长数组中的所有值,并返回空值{},以查找任何较短数组中

我刚刚发现自己在Tcl中有两个阵列

我得到了
$W\u数组
$p\u数组

我需要遍历一个数组,而不知道每个数组的大小,并且只在两个数组都有值时执行命令。是的,阵列长度可能不同


最好的方法是什么?

不确定“两个数组的值”到底是什么意思,但tcl的
foreach
支持一次迭代多个数组。。。所以你可以说。
foreach w$w_数组p$p_数组{
如果{$w==$val&&$p==$val}{
...
}
}


当数组长度不相同时,
foreach
将返回最长数组中的所有值,并返回空值
{}
,以查找任何较短数组中缺少的元素。

不确定“两个数组的值”的确切含义,但tcl的
foreach
支持一次迭代多个数组。。。所以你可以说。
foreach w$w_数组p$p_数组{
如果{$w==$val&&$p==$val}{
...
}
}


当数组长度不相同时,
foreach
将返回最长数组中的所有值,并返回任何较短数组中缺失元素的空值。

使用
llength
命令确定数组是否包含值

if {[llength $W_Array] > 0 && [llength $P_Array] > 0} {
# Do something
}

使用
llength
命令查看数组是否包含值

if {[llength $W_Array] > 0 && [llength $P_Array] > 0} {
# Do something
}

我想你的意思是,其他的答案是使用列表,它们也被称为散列映射或关联数组

我想你要求的是:

array set a1 {a 1 b 2 c 3 d 4 e 5}
array set a2 {z 0 x 1 b 2 e 99}
foreach n [array names a1] {
  if {[info exists a2($n)]} {
    puts "Do something with $a1($n) and $a2($n)"
  }
}

# FOREACH LOOP RESULTS IN THESE TWO PRINTOUTS
Do something with 5 and 99
Do something with 2 and 2

我想你的意思是,其他的答案是使用列表,它们也被称为散列映射或关联数组

我想你要求的是:

array set a1 {a 1 b 2 c 3 d 4 e 5}
array set a2 {z 0 x 1 b 2 e 99}
foreach n [array names a1] {
  if {[info exists a2($n)]} {
    puts "Do something with $a1($n) and $a2($n)"
  }
}

# FOREACH LOOP RESULTS IN THESE TWO PRINTOUTS
Do something with 5 and 99
Do something with 2 and 2

看起来您真正指的是列表,它更像其他语言所称的数组。Tcl数组是散列映射。您可以计算Tcl列表的长度,但不需要转换它就不能计算Tcl数组的长度。如果您能澄清您指的是列表(a、b、c)还是数组(a=X、b=Y、c=Z),答案可能会更有用。看起来您真正指的是列表,它更像其他语言所称的数组。Tcl数组是散列映射。你可以计算Tcl列表的长度,但不需要转换就不能计算Tcl数组的长度。如果你能澄清你指的是列表(a,b,c)还是数组(a=X,b=Y,c=Z),答案可能会更有用。我认为这与回答实际问题不太接近。诚然,这个问题有点模糊。我不认为这接近于回答实际问题。诚然,这个问题有点模糊。