我正在尝试二维数组。我想要某种具有相同字符的矩阵。我可以定义一个带有固定元素的空白多维数组,并使用循环为它提供一个字符。但是,我也可以执行@(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
我的数组定义错误吗? 已添加:那么,如何正确地快速定义它?
答案 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