【发布时间】:2017-09-12 22:31:06
【问题描述】:
我有两个多维数组:
$rows=[{"id":9,"auditorium_id":10,"row_name":"A","row_seats_no":56,"seat_price":140,.....},{....}]
对于每个 $row,该行还有另一个 $spaces 数组:
$spaces = [{"id":1,"row_id":9,"starts_at":31,"ends_at":35,"deleted_at":null},{"id":11,"row_id":9,"starts_at":21,"ends_at":25,"deleted_at":null},{"id":21,"row_id":9,"starts_at":10,"ends_at":17,"deleted_at":null}]
我尝试创建一个字符串来描述要返回给 JavaScript 的每行中的座位和空间,例如对于“A”行,应该返回这样的字符串:
'AAAAAAAA____AAAAAAAA____AAAAAAAAA', 'row-B', 'row-C', etc...
其中'A' char 代表座位,'_' 代表空白。
这是我的代码:
foreach ($auditorium->seatRows as $key => $row) { // inside single row
$map = $map."'";
$rowSpaces = RowSpace::where('row_id', '=', $row->id)->get();
for($i = 1; $i <= $row->row_seats_no; $i++){ // print seat or space, where $i = column_number
foreach ($rowSpaces as $spaceKey => $rowSpace) {
if($i > $rowSpaces[$spaceKey]->starts_at && $i < $rowSpaces[$spaceKey]->ends_at)
{
$map = $map."_";
}
}
if($i <= $rowSpaces[$spaceKey]->starts_at || $i > $rowSpaces[$spaceKey]->ends_at)
{
$map = $map."{$row->row_name}[{$row->row_name}$i]";
}
}
$map = $map."',";
$seats = $seats."{$row->row_name}:{'price': {$row->seat_price}, 'classes': '{$row->seatClasses}', 'category': 'VIP'},";
array_push($rows, $row->row_name);
}
我的问题是如何遍历每个座位(for 循环中的 $i),并知道它是座位还是空格。
for($i = 1; $i <= $row->row_seats_no; $i++){ // print seat or space, where $i = column_number
foreach ($rowSpaces as $spaceKey => $rowSpace) {
if($i > $rowSpaces[$spaceKey]->starts_at && $i < $rowSpaces[$spaceKey]->ends_at)
{
$map = $map."_";
}
}
if($i <= $rowSpaces[$spaceKey]->starts_at || $i > $rowSpaces[$spaceKey]->ends_at)
{
$map = $map."{$row->row_name}[{$row->row_name}$i]";
}
}
非常感谢任何帮助
【问题讨论】:
-
$rows 和 $spaces 的长度是否相同。对于每个 $row 都有一个 $space,反之亦然。
-
每排座位的总数是否相同?
-
@KrisRoofe 不,$rows 和 $spaces 的长度不同
-
@KrisRoofe 不是每个 $row 都有相同数量的座位,也不是相同数量的 $spaces 。当用户输入这些值时,我不能保证。
标签: php laravel for-loop foreach