【问题标题】:For Loop Not Working in a Laravel Controller ClassFor 循环在 Laravel 控制器类中不起作用
【发布时间】:2016-08-05 12:37:43
【问题描述】:

在我的 Laravel 项目中,我有一个 BusController.php 文件,我需要在其中运行一个 for() 循环。但是,循环不起作用。我也尝试过使用刀片进行循环,但遇到了同样的问题。

BusController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;
use App\Bus;
use App\Bus_type;
use App\Company;
use App\Http\Requests;

class BusController extends Controller
{
    public function index()
    {
        $buses = Bus::all();
        $bus_types = Bus_type::all();
        $companies = Company::all();

        return view('admin.adding_bus', compact('buses', 'bus_types', 'companies'));
    }

    public function store(Request $request)
    {
        $bus = new Bus;
        $bus->company_name = $request->company_name;
        $bus->bus_type = $request->bus_type;
        $bus->bus_number = $request->bus_number;
        $bus->no_of_rows = $request->no_of_rows;
        $bus->no_of_columns = $request->no_of_columns;
        $seats = "";

        for ($i = 1; $i <= ($request->no_of_rows * $request->no_of_columns); $i++) {
            $seats = $seats . "b";
        }
        $bus->seats = $seats;

        $bus->save();
        $buses = Bus::all();
        $bus_types = Bus_type::all();
        $companies = Company::all();

        return view('admin.adding_bus', compact('buses', 'bus_types', 'companies'));
    }
}

【问题讨论】:

  • 在删除大括号后尝试 for($i = 1; $i no_of_rows * $request->no_of_columns; $i++){ $seats = $seats."b"; }
  • 你能在for循环之前转储$request-&gt;no_of_rows$request-&gt;no_of_columns的值吗?
  • 我想要一个在席位字符串中包含 $request->no_of_rows * $request->no_of_columns b 的字符串。实际上我正在尝试做座位 += "b"; @SagarGuhe
  • ok 然后尝试 for($i = 1; $i no_of_rows * (int)$request->no_of_columns; $i++){ $seats = $seats ."b"; }
  • 只需在下面添加var_dump($request-&gt;no_of_rows, $request-&gt;no_of_columns); 的结果作为评论,我们将帮助您完成 for 循环。我们只需要一些调试信息

标签: php laravel for-loop laravel-5.2


【解决方案1】:

确保您已验证从Request 收到的数据。因为如果不这样做,循环将失败,因为loop condition 将始终为假。 为了测试它,这就是我所做的:

$seats = "";
$num_cols = 2;
$num_rows = ''; // assume you don't validate the request, so this can receive empty string too
// $num_rows = 0; // will output the same as above
for($i = 1;$i<=($num_cols * $num_rows);$i++)
{
    $seats = $seats."b";
}
var_dump($seats);

输出:

string(0) ""

它正在工作:

$seats = "";
$num_cols = 2;
$num_rows = 20; // correctly validated as integer and must be more than 0 because you're doing multiplication here in the following loop
for($i = 1;$i<=($num_cols * $num_rows);$i++)
{
    $seats = $seats."b";
}
var_dump($seats);

输出:

string(40) "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"

【讨论】:

    猜你喜欢
    • 2019-05-13
    • 2021-10-19
    • 1970-01-01
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 2017-04-13
    相关资源
    最近更新 更多