【问题标题】:How to change this array key based on this mysql result如何根据这个mysql结果更改这个数组键
【发布时间】:2019-09-15 20:41:35
【问题描述】:

我也有这个代码和查询。

$id_user = $this->current_user->id;
    $query_perusahaan = "SELECT
                    default_perusahaan.id_perusahaan,
                    default_perusahaan.nama_perusahaan
                    FROM
                    default_users
                    INNER JOIN default_user_perusahaan ON default_user_perusahaan.id_default_user = default_users.id
                    INNER JOIN default_perusahaan ON default_perusahaan.id = default_user_perusahaan.id_default_perusahaan
                    WHERE default_users.id = $id_user";
    $query_perusahaans = $this->db->query($query_perusahaan)->result_array();
    $list_per = array();
    $list_per[null] = "Tidak memakai perusahaan";
    foreach ($query_perusahaans as $item => $nama) {
        $list_per[$item] = $nama;
    }
        print_r($list_per);
        die();

这是结果:

我期望的结果是 id_perusahaan 成为数组键。 我究竟做错了什么? :(

【问题讨论】:

  • id_perusahaan 已经是数组键
  • 你的问题是什么?
  • 是的,但我希望它位于空键的一级?如何向上移动它@ZainFarooq
  • $query_perusahaans 可能只是一个数字索引数组,所以foreach ($query_perusahaans as $item => $nama) 当然会在 $item 中获得该索引。 id_perusahaan 是数组元素 value 的一部分,因此您可能想要使用 $list_per[$nama['id_perusahaan']] = $nama;
  • 我其实希望它是这样的:

标签: php mysql arrays


【解决方案1】:

替换

 $list_per[$item] = $nama;

$list_per[$nama['id_perusahaan']] = $nama['name_perusahaan']; 

【讨论】:

    【解决方案2】:

    你可以使用array_column而不是循环数组

    $list_per = array_column($query_perusahaans, null, "id_perusahaan");
    

    第三个参数设置键名。
    这意味着 array_column 将返回没有特定列 (null) 的数组,但将键更改为“id_perusahaan”。
    这导致数组是关联的

    或者如果您希望数组是平坦的:

    $list_per = array_column($query_perusahaans, "name_perusahaan", "id_perusahaan");
    

    【讨论】:

      猜你喜欢
      • 2016-12-10
      • 2015-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-13
      相关资源
      最近更新 更多