使用laravel获取数组键而不是值

时间:2017-03-02 09:46:38

标签: php mysql arrays laravel blade

大家好我即将遇到问题而我想通过一个阵列循环并用laravel刀片引擎显示它

我的控制器代码是这样的

    $table =  DB::table('tables')->select('id')->where('name', strtolower($name))->first();

    $columns =  Column::where('table_id', $table->id)->get();

    foreach ($columns as $col) {
        $data[] = $col->col_name;
    };

    $content = DB::table($name)->select(...$data)->get();


    return view('back.group.view-table', compact('content', 'columns', 'data'));

我的刀片视图代码就像这样

<table class="table table-striped">
            <thead>
                <tr>
                    @foreach($columns as $column)
                        <th>{{ $column->dis_name }}</th>
                    @endforeach
                </tr>
            </thead>
            <tbody>
                @foreach ($content as  $value)
                    <tr>

                        @for ($i = 0; $i < count($columns); $i++)
                            <td>{{ $value->key = $data[$i] }}</td>
                        @endfor

                    </tr>
                @endforeach

            </tbody>
        </table>

这是我得到以下代码的结果 This is the result wich i get with the following code

我想要的结果 The result i want to have

6 个答案:

答案 0 :(得分:1)

php有一个名为array_keys();

的函数

所以它看起来像我想的那样

$results = DB::table($name)->select(...$data)->get();
$content = $results->first();
$keys = array_keys($content->toArray());

这会给你钥匙。如果您需要每个结果中的键只需循环$ results,并且每个$ result都使用array_keys语法获取键。

答案 1 :(得分:0)

像这样改变

<table class="table table-striped">
     <thead>
       <tr>
        @foreach($columns as $column)
          <th>{{ $column->dis_name }}</th>
        @endforeach
        </tr>
      </thead>
      <tbody>
      @foreach ($content as  $value)
      <tr>
         <td>{{ $value->name }}</td>
      </tr>
      @endforeach

     </tbody>
</table>

答案 2 :(得分:0)

另一种解决方案是使用array_flip()它会翻转键和值。

答案 3 :(得分:0)

使用array_keys()获取数组中的所有键,您也可以使用foreach($arr as $key => $value)

答案 4 :(得分:0)

我找到答案我只是改变了我的观点

<table class="table table-striped">
        <thead>
            <tr>
                @foreach($columns as $column)
                    <th>{{ $column->dis_name }}</th>
                @endforeach
            </tr>
        </thead>
        <tbody>
            @foreach ($content as  $value)
                <tr>

                    @for ($i = 0; $i < count($columns); $i++)
                        <td>{{ $value->key = $data[$i] }}</td>
                    @endfor

                </tr>
            @endforeach

        </tbody>
    </table>

到此

<table class="table table-striped">
            <thead>
                <tr>
                    @foreach($columns as $column)
                        <th>{{ $column->dis_name }}</th>
                    @endforeach
                </tr>
            </thead>
            <tbody>
                @foreach ($content as  $value)
                    <tr>

                        @foreach ($data as $key)
                            <td>{{ $value->$key }}</td>
                        @endforeach

                    </tr>
                @endforeach

            </tbody>
        </table>

答案 5 :(得分:-1)

$hayStack = ['name' => 'John', 'age' => 30, 'sex' => 'm'];
$searchValue = 30;
$keyName = array_keys($hayStack, $searchValue)[0]; 

array_keys() 将搜索所有可能包含搜索值的键。考虑到 $hayStack 是一个数组,不会有任何重复的键,所以我们的结果将在索引 0 处。
如果搜索值为 30,结果将为“年龄”。 这里 array_keys 是一个内置函数 https://www.php.net/manual/en/function.array-keys.php