尝试根据循环中的参数在foreach循环中为彼此分配变量

时间:2015-08-21 19:03:34

标签: php laravel laravel-4 foreach eloquent

我有两个数组,我已经传递给我的Laravel视图。我想运行一个循环,将一个State变量设置为总变量。由于某种原因,即使我在循环之前定义了变量,也没有设置变量。我知道我有正确的变量排队,因为当我对两者做一个简单的回声时,我得到了正确的结果。

完整的代码张贴:

map.blade.php

<head>
<meta charset="utf-8">

<link rel="stylesheet" href="css/screen.css">
<link rel="stylesheet" href="css/stately.css">

@define $AK = ""
@define $AL = ""
@define $AR = ""
@define $AZ = ""
@define $CA = ""
....
@define $WY = ""
@define $arr = array_combine($allstates, $alltotals)

@foreach ($arr as $allstates => $alltotals)
  @define $array[$allstates] = $alltotals
  {{ $allstates }} {{ $alltotals }}<br>
  @define $allstates = $alltotals
  {{ $allstates }} {{ $alltotals }}<br>
@endforeach
</head>
<body>
  [Map here]
{{ $PA }}
</body>

控制器:

public function map()
{

    $allstates = DB::table('distributors')->lists('state');
    $alltotals = DB::table('distributors')->lists('total');

    $merged = DB::table('distributors')->lists('state','total');

    return View::make('map')
    ->with(compact('allstates'))
    ->with(compact('alltotals'))
    ->with(compact('merged'));
}

你可以在hennessey.io/map

上看到这个输出

1 个答案:

答案 0 :(得分:0)

你不能使用foreach循环修改数组。该值在循环内部分配,并在每次迭代后被丢弃。你是passing the key by value.

尝试这样做:

@define $arr = array_combine($allstates, $alltotals)
@foreach ($the_array as $key => $value)
    @define $arr[$key] = $value
@endforeach

这将修改原始数组,而不仅仅是循环内部的副本。 Here's有关foreach循环如何在PHP中工作的更多信息。