为了账号安全,请及时绑定邮箱和手机立即绑定

使用 foreach 返回的值创建动态数组

使用 foreach 返回的值创建动态数组

PHP
慕田峪9158850 2023-08-11 16:15:00
我在计算百分比后以这种方式返回值。     $school = $api->schools;                foreach ($school as $key => $value){    $name = $value->id;    $data = DB::table('sys_users')        ->where('schoolid','=',$name)        ->get();    $exist1 = count($data)*4;    $datarecord = DB::table('sys_record')        ->join('sys_users', 'sys_users.id_jovens', '=', 'sys_record.id_user')        ->where('sys_users.schoolid','=',$name)        ->get();    $correct1 = count($datarecord);            function porcentagem_nx($parcial,$total) {                return ($parcial * 100) / $total;            }    $worldone[$value->id] = porcentagem_nx($correct1, $exist1);        // Because you already used $data above, I chose a different name    // for this array.    $items[] = [        "id"       => $value->id,        "name"     => $value->name,        "worldone" => $worldone,    ];}                dd($items);我将在数据表上使用它,因此我的手动测试有必要像下面的那样,但是是动态的。$data = [                [                "id" => 1,                "name" => "Brand",                "worldone" => $worldone,                ],                [                    "id" => 2,                    "name" => "Just",                    "worldone" => $worldone,                ],            ];我无法将 worldone 变量中的信息从 foreach 中取出并使变量 $school 中的所有数组记录的数组动态化。
查看完整描述

1 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

我的这个答案可能是错的,但我会尝试一下。如果我做出了一些可能不正确的假设,请告诉我。您想要从foreach循环中获取的结果值如下所示:


$data = [

    [

        "id"       => 1,

        "name"     => "name",

        "worldone" => $worldone,

    ],

];

所以我的建议是这样的循环foreach:


foreach ($school as $key => $value){

    $name = $value->id;


    $data = DB::table('sys_users')

        ->where('schoolid','=',$name)

        ->get();


    $exist1 = count($data)*4;


    $datarecord = DB::table('sys_record')

        ->join('sys_users', 'sys_users.id_jovens', '=', 'sys_record.id_user')

        ->where('sys_users.schoolid','=',$name)

        ->get();


    $correct1 = count($datarecord);


    $worldone[$value->id] = porcentagem_nx($correct1, $exist1);

    

    // Because you already used $data above, I chose a different name

    // for this array.

    $items[] = [

        "id"       => $value->id,

        "name"     => $value->name,

        "worldone" => $worldone,

    ];

}

该$items变量将根据您指定的内容设置所有项目。我假设id和的值name位于循环$value中的对象中foreach。如果这是错误的,请告诉我,我可以更新答案以显示它们应该来自哪里。


您可以循环$items或调用类似的内容print_r($items[0]);,输出应该为您提供与$data上面的数组类似的内容。


查看完整回答
反对 回复 2023-08-11
  • 1 回答
  • 0 关注
  • 69 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信