dtny30176 2019-06-10 22:23
浏览 603
已采纳

将sql查询转换为数组

I have try for days, to make my query row as array but haven't success yet. I have 'KD.1','KD.2','KD.3','KD.4','KD.5','KD.1','KD.2','KD.3','KD.4','KD.5' in mysql row and want to make this as array so i will get 10 array rather than 1. Next i will use it to combine with another row that has same pattern. Look like this 0,0,1,1,0,0,1,1,1,0

while($row = $result->fetch_array(MYSQLI_ASSOC))  
  {  
    $keys = Array($row['listkd']);
    $values = Array($row['rightval']);
    $final_array [$row['testnis']]= array_combine_($keys, $values);
  }

my function array_combine_ i get from here

function array_combine_($keys, $values){
    $result = array();

    foreach ($keys as $i => $k) {
     $result[$k][] = $values[$i];
     }

    array_walk($result, function(&$v){
     $v = (count($v) == 1) ? array_pop($v): $v;
     });

    return $result;
}

I always get one array rather than ten, so its can't be combine two arrays. What i want the result is like this

[8131] => Array ( 
  [KD.1] => Array ( [0] => 0 [1] => 0 ) 
  [KD.2] => Array ( [0] => 0 [1] => 1 ) 
  [KD.3] => Array ( [0] => 1 [1] => 1 ) 
  [KD.4] => Array ( [0] => 1 [1] => 1 ) 
  [KD.5] => Array ( [0] => 0 [1] => 0 ) 
)
[8173] => Array ( 
  [KD.1] => Array ( [0] => 0 [1] => 0 ) 
  [KD.2] => Array ( [0] => 0 [1] => 1 ) 
  [KD.3] => Array ( [0] => 1 [1] => 1 )
  [KD.4] => Array ( [0] => 1 [1] => 1 ) 
  [KD.5] => Array ( [0] => 0 [1] => 0 ) 
)
  • 写回答

1条回答 默认 最新

  • drgm51600 2019-06-11 01:09
    关注

    Array($row['listkd']) will not parse the string as separate array elements. It just creates an array with a single element, which is the entire contents of the listkd column.

    You can use str_getcsv() to parse the string. It will split it on the commas, and parse the quotes as delimiters around the values.

    while($row = $result->fetch_array(MYSQLI_ASSOC))  
      {  
        $keys = str_getcsv($row['listkd'], ",", "'");
        $values = str_getcsv($row['rightval'], ",", "'");
    
        $final_array [$row['testnis']]= array_combine_($keys, $values);
      }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵