我有一个带有数组的示例哈希,但是我访问数组元素的方式似乎不对。我是这样做的:
@foreach($project->houseTypes as $houseTypes)
@foreach($houseTypes->types as $types)
@foreach($types->houses->sortBy('bnr') as $house)
<tr class="table-row">
<td>{{$house->bnr}}</td>
<td>{{$house->type->houseType->title}}</td>
<td>{{$house->type->rooms}}</td>
<td>€{{$house->price}}</td>
<td>{{$house->living_surface}}m<sup>2</sup></td>
<td>{{$house->water}}m<sup>2</sup></td>
<td>{{$house->location}}</td>
</tr>
@endforeach
@endforeach
@endforeach
应该打印出“value-3”,但它没有。
答案 0 :(得分:3)
您的哈希中没有数组。你有一个清单。请记住以下几点:
如果将数组放入列表中,它将被视为另一个列表,列表是平的:
(1, 2, (3, 4, 5), (6, (7)))
等于
(1, 2, 3, 4, 5, 6, 7)
如果要构建更复杂的数据结构,则需要使用引用。有两种方法可以作为参考。您可以使用\
这样的
my @foo = qw(a b c);
my $ref = \@foo;
或直接将其构建为匿名引用,然后将其分配给变量。
my $ref = [ qw(a b c) ];
my $ref2 = [ 1, 2, 3 ];
要制作哈希引用,请使用花括号{}
。
my $ref = { a => 1, b => 2 };
引用是标量值,因此它们本身只是一个单值。这就是为什么你需要取消引用它们以获得内部内部的价值的原因(实际上它不在里面,它是引用)。
%Hash_Object = (
"Property1","value-1",
"Property2",["value-2","value-3"]
);
$Hash_Object{Property2}[1];
$Hash_Object{Property2}->[1]; # or like this with ->
你已经知道如何做到这一点。您还可以在每个新的取消引用前使用->
运算符。有些人发现阅读更清楚。
有关详细信息,请参阅perlreftut和perlref以及Mike Friedman's excellent blog post about lists and arrays。
您的示例代码编写得不是很好。这是一些改进。
=>
进行哈希分配""
my
my %example = (
Property1 => 'value-1',
Property2 => [
'value-2',
'value-3',
],
);
答案 1 :(得分:2)
始终在程序顶部使用使用警告; 和使用严格; 。
如果使用此功能,则会显示以下错误
/* Draw Bitmap everytime I touch the screen */
public void DrawMarker(List<Coordinates> coords){
Canvas canvas = surfaceHolder.lockCanvas();
for(int i=0; i < coords.size(); i++) {
canvas.drawBitmap(bitmap, coords.get(i).coordX, coords.get(i).coordY, paint);
}
surfaceHolder.unlockCanvasAndPost(canvas);
}
在perl中,列表在一起展平。
所以第一个错误是
Odd number of elements in hash assignment at array.pl line 3.
Can't use string ("value-2") as an ARRAY ref while "strict refs" in use at array.pl line 8
哈希必须有成对的键和值。所以哈希的元素不应该是奇数。
您的代码应为
Odd number of elements in hash assignment at array.pl line 3
答案 2 :(得分:0)
数组值应该放在方括号中,谢谢simbabque
%Hash_Object = (
"Property1","value-1",
"Property2",["value-2","value-3"]
);
print $Hash_Object{Property2}[1];