Laravel中的阵列推送

cld4siwp  于 2023-01-21  发布在  其他
关注(0)|答案(3)|浏览(163)

我正在尝试将新数组项推送到具有数据库项的现有数组变量中。我想要做的是在此数组的末尾添加名为"其他"的新项,并在视图中将其显示为选择下拉列表,其中包含数据库中的所有项,并在此末尾选择我在控制器中手动添加的"其他"项。
以下是我尝试做的事情:

$competition_all = Competition::all();
    $newCompete = array('name'=>'Others');
    array_push($competition_all, $newCompete);

    $this->competition_games = array('Competition');

    foreach ($competition_all as $competition_games) {
        $this->competition_games[$competition_games->name] = $competition_games->name;
    }

它说的是这样的
未处理的异常
留言:
正在尝试获取非对象位置的属性:
第104行上的C:\xampp\htdocs\khelkheladi\应用程序\控制器\注册表. php
在我的数据库中,Competition具有这种类型的列结构

->id
->year
->place
->name
->created_at
->updated_at

以给定的顺序。
我尝试做的是不实际插入数据库中的一个项目,只是静态地显示视图中的select标签中的其他选择项目。我如何插入这样的新项目,而不实际插入到数据库中,但只显示在视图中?
我之前通过检索数据库项得到的输出如下所示

<select>
  <option value="1">Value 1</option>
  <option value="2">Value 2</option>
  <option value="3">Value 3</option>
  <option value="4">Value 4</option>
</select>

我喜欢做的是这样的

<select>
  <option value="1">Value 1</option>
  <option value="2">Value 2</option>
  <option value="3">Value 3</option>
  <option value="4">Value 4</option>
  <option value="5">Others</option>
</select>
wa7juj8i

wa7juj8i1#

这是因为你在数组的最后一个元素上添加了一个非对象。
这里我假设你得到一个带有name属性的对象数组

$competition_all = Competition::all();

在这里,您将向objects数组的最后一个元素添加一个key=〉value对

$newCompete = array('name'=>'Others');
array_push($competition_all, $newCompete);

在这里,您将遍历对象数组,当遇到最后一个元素时,“$competition_游戏-〉name”没有name属性

foreach ($competition_all as $competition_games) {
            $this->competition_games[$competition_games->name] = $competition_games->name;
        }

尝试为它包含一个stdclass,例如:

$newCompete = new StdClass();
$newCompete->name = 'Others';
array_push($competition_all, $newCompete);
ncecgwcz

ncecgwcz2#

“干净”的方法是创建一个Competition的示例,而不将其提交到数据库,然后用额外的示例再重复一次循环。
然而,在这里您似乎只是生成一个列表,因此应该足以更快地添加到最终列表中:

// Empty array
$this->competition_games = [ 0 => 'Others' ];

foreach (Competition::all() as $game) {
    $this->competition_games[$game->id] = $game->name;
}

使用0(或-1)作为不存在的ID。

disho6za

disho6za3#

$containerArray =   ['Value1, 'value2', 'value3',...];     
                                                 
foreach ($containerArray as $key => $value) {
    $containerArray [$key]   =   $value;
}

这就行了。

相关问题