代码之家  ›  专栏  ›  技术社区  ›  Geoff_S

数组未正确分配数据库中的ID

  •  0
  • Geoff_S  · 技术社区  · 6 年前

    我目前有一个select语句,它构建一个数组,并为值进行循环。它返回正确的值,但没有分配正确的分配。

    因此,我将位置视为数组键,这是正确的,但例如在下面的数组中, Office 1 应该有一个数组 ID 1 分配 Room Main ID 2 分配给 Room Extra 但是相反, display_id 在显示名称之外的数组中。

    我的查询:

    SELECT l.id , location_name, d.id as display_id, display_name, location_id
        FROM locations l
        inner join displays d
        ON d.location_id = l.id;";
    

    我的代码:

    $displayResult = $mysqlConn->query($getDisplays);
    
        $displayNames = array();
        foreach($displayResult as $subArray) {
          if(!array_key_exists($subArray['location_name'], $displayNames)) {
            $displayNames[$subArray['location_name']] = array();
    
          }
            $displayNames[] = $subArray['display_id'];
            $displayNames[$subArray['location_name']][] = $subArray['display_name'];
    
        }
    

    此操作当前转储此数组:

    Array
    (
    [Office 1] => Array
        (
            [0] => Room Main
            [1] => Room Extra
        )
    
    [0] => 1
    [1] => 2
    [Office 2] => Array
        (
            [0] => Room Conference
            [1] => Room Break
        )
    
    [2] => 3
    [3] => 4
    

    我只需要为显示名称分配显示ID,因为我正在为每个显示名称构建链接,我正在尝试将显示ID保存为每个显示名称的URL值。

    我到底做错了什么?

    1 回复  |  直到 6 年前
        1
  •  1
  •   u_mulder    6 年前

    我想你正确的循环应该是:

    foreach($displayResult as $subArray) {
        if(!array_key_exists($subArray['location_name'], $displayNames)) {
            $displayNames[$subArray['location_name']] = array();
    
        }
        // here you add `display_name` under key `display_id`
        $displayNames[$subArray['location_name']][$subArray['display_id']] = $subArray['display_name'];
    }