当前位置: 首页 > 知识库问答 >
问题:

如何向数组中的每个索引添加一个新项-php?

班建义
2023-03-14

var_export($res)是如下所示的数组。

array(0 =>(object) array('user' => NULL,
                        'courseId' => 18,),
      1 =>(object) array('user' =>(object) array('id' => 1,
                                                'name' => 'admin',
                                                'files' => NULL,),
                        'courseId' => 1,),
    )

在这个数组中的每个索引中,我需要使用courseId计算count,并向每个索引添加一个名为count的新项。我使用了下面的代码。预期的最终结果是一个对象数组,而不是一个对象对象数组。

$res=json_decode($response);
foreach ($res as $key ) {                   
    $count = MyCourse::where('course_id', $key->courseId)->distinct('student_id')->count();
    $res['count'] = $count; 
}
return response()->json(['data' => $res,'statusCode' => 200], 200);

上面的代码显示了下面的数据。它添加了Count作为数组中的新索引,而不是将其作为新项添加到数组的每个索引中。此外,它以对象的对象的形式返回结果。我怎样才能解决这个问题?

    {
        "0": {
            "user": null,
            "courseId": 18
        },
        "1": {
            "user": {
                "id": 1,
                "name": "admin",
                "files": null
            },
            "courseId": 1
        },
        "count": 1
    }

预期最终结果:

  [
       {
            "user": null,
            "courseId": 18,
            "count": 20
        },
        {
            "user": {
                "id": 1,
                "name": "admin",
                "files": null
            },
            "courseId": 1,
            "count": 10
        }
  ]

共有2个答案

凤明朗
2023-03-14

在您的情况下,您想设置$key的计数字段,而不是$res

您的foreach循环应该如下所示:

foreach ($res as $key ) {                   
    $count = MyCourse::where('course_id', $key->courseId)->distinct('student_id')->count();
    $key->count = $count; 
}

这将产生:

    {
        "0": {
            "user": null,
            "courseId": 18,
            "count": 20
        },
        "1": {
            "user": {
                "id": 1,
                "name": "admin",
                "files": null
            },
            "courseId": 1,
            "count": 10
        }
    }
贺文彬
2023-03-14

foreach循环中,$key是包含courseId的每个对象。

不要将count添加到$res中,而是将其添加到$key中,如下所示:

foreach ($res as &$key ) {                   
    $count = MyCourse::where('course_id', $key->courseId)->distinct('student_id')->count();
    $key->count = $count; // set it to $key instead of $res
}

如果希望结果是数组而不是对象,请将true作为第二个参数传递给json\u decode,如下所示:

$res = json_decode($response, true); // associative array instead of object

然后编辑foreach以将其作为数组处理:

foreach ($res as $key ) {                   
    $count = MyCourse::where('course_id', $key['courseId'])->distinct('student_id')->count();
    $key['count'] = $count; // set it to $key instead of $res
}
 类似资料:
  • 我有一个名为$all_cats的数组,它输出以下内容 例A 我尝试了以下方法,但似乎无法将每个项目添加到同一个键。如何添加每个术语\u id 如何添加每个term_id

  • 问题内容: 简单版本: 如果我这样做: 我得到的输出。但是我想。使用隐式numpy循环而不是自己遍历它,是否可能以某种方式实现? 我实际上需要做什么的版本: 我有一个结构化的数组,其中包含一个索引,一个值和一些布尔值。我想根据布尔值对那些索引处的值求和。显然,这可以通过一个简单的循环来完成,但是似乎可以通过聪明的numpy索引来实现(如上所述)。 例如,我有一个包含5个元素的数组,要从数组中填充值

  • 我希望在R中自动化一个过程,这个过程以前是手工完成的,非常耗时。我想从一个数据帧向另一个数据帧中的每个唯一变量添加一系列观察结果。使用数据的示例可能会更好地说明这一点。。。 表1包含了对每种动物的大量观察,这是我想为每种动物添加一组行的表。 表2显示了应应用于每只动物的行。 最后一个表应该如下所示: 有人能给我指出正确的方向吗?优先使用tidyverse超过基本R(但不是必需的:))

  • 这里的问题是什么?。我正在尝试实现图数据结构,使用邻接列表,通过使用来自util包的集合。这里 包含一些整数的LinkedList数组。LinkedList的每个元素都包含另一个类型为:node的LinkedList。 但在编译过程中,它表示不兼容类型。如何解决这个问题?

  • 我有通过ajax调用存储数据的数组索引。我只想对数组中的一个索引进行验证。这是我的代码。 我只需要验证为 来自前端的数组如下所示

  • 我有一个来自AJAX调用的JSON数组,如下所示: 我想在数据表上使用此数据,但我想根据字段标题(组)向表中的每一行添加文本输入。因此,我想将此列添加到每个数组,类似于: 这样DataTables将在每个新行上添加文本输入。如何使用jQuery或javascript实现这一点? 我尝试通过数组进行迭代: 但这显示错误,

  • ==最终更新== http://plnkr.co/edit/WKRBB7?p=preview 因为我在表单中使用ngModel,所以我必须添加attribue。 我的错误是,我使用了与它的名称相同的值。 当我换到下面,我的问题就解决了。 ========== 对不起,我不记得为什么使用名称[$index]。名称而不是x。名字。 也许几年前,我在使用x.Name时遇到了一些错误,然后养成了使用索引的

  • 问题内容: 我有一个PHP数字数组,我想在前面加上减号(-)。我认为通过使用爆炸和内爆是可能的,但是我对php的了解实际上是不可能的。任何帮助,将不胜感激。 本质上,我想从这里开始: 对此: 有任何想法吗? 问题答案: 简单: 除非数组是字符串: