相同字符的二维数组

时间:2018-07-21 05:44:20

标签: arrays powershell multidimensional-array

我正在尝试二维数组。我想要某种具有相同字符的矩阵。我可以定义一个带有固定元素的空白多维数组,并使用循环为它提供一个字符。但是,我也可以执行@(something)*n来直接定义已经提供了某些东西的数组。

据我到目前为止的了解,这是怎么做的:

> $arr = ,(,'E'*3)*3

这些似乎还可以:

> $arr[1]
E
E
E
> $arr[1][2]
E

但是当我尝试在某个地方替换字符时,例如$arr[1][2] = 'D',很多字符将被替换:

> $arr
E
E
D
E
E
D
E
E
D

我的数组定义错误吗? 已添加:那么,如何正确地快速定义它?

1 个答案:

答案 0 :(得分:1)

在非数字值上使用$(document).on('change', '.qty_set', function(){ var quantity = $(this).val(); var row_id = $(this).data("rowid"); $.ajax({ url:"<?php echo base_url(); ?>Sepet/setliste", method:"POST", data:{row_id:row_id, quantity:quantity}, success:function(data) { //alert("Güncellendi"); $('#sepetload').html(data); } });运算符会创建原始值的副本。但是,如果您要复制的项目不是String或Char之类的原始(-ish)类型,则结果将不是该对象的重复项,而是对象 reference 的副本。由于所有实例都将指向同一对象,因此更改一个实例将全部更改。

要创建不同的实例,您需要在循环中重复数组实例化,如PetSerAl在注释中所示:

*

在这种情况下,您还可以创建一个“模板”数组并将其克隆:

$arr = 1..3 | ForEach-Object { ,(,'E' * 3) }

但是,请注意,克隆对象将不会克隆嵌套的对象引用,因此后者并不是在所有情况下都可行的方法。

类似的事情将无法按您的预期方式工作(因为嵌套哈希表对象的引用是 still ,它们在克隆 array 对象):

PS C:\> $a0 = ([PSCustomObject]@{'x'='E'}),([PSCustomObject]@{'x'='E'})
PS C:\> $arr = 1..2 | ForEach-Object { ,$a0.Clone() }
PS C:\> $arr

x
-
E
E
E
E

PS C:\> $arr[1][1].x = 'F'
PS C:\> $arr

x
-
E
F
E
F

但是类似的事情会起作用:

PS C:\> $arr = 1..2 | ForEach-Object { ,(([PSCustomObject]@{'x'='E'}),([PSCustomObject]@{'x'='E'})) }
PS C:\> $arr

x
-
E
E
E
E

PS C:\> $arr[1][1].x = 'F'
PS C:\> $arr

x
-
E
E
E
F
相关问题