我已经试了好几天了,想把我的查询列作为数组,但是还没有成功。
我在mysql行中有'KD.1'、'KD.2'、'KD.3'、'KD.4'、'KD.5'、'KD.1'、'KD.2'、'KD.3'、'KD.4'、'KD.5',希望将其作为数组,这样我将得到10个数组而不是1个。
下一步,我将使用它与另一个具有相同模式的行合并。像这样0,0,1,1,0,0,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);
  }

我的函数数组从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;
}

我总是得到一个数组而不是十个,所以它不能组合成两个数组。我想要的结果是这样的
[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 )
)

最佳答案

Array($row['listkd'])不会将字符串解析为单独的数组元素。它只创建一个包含单个元素的数组,该元素是listkd列的全部内容。
您可以使用str_getcsv()来解析字符串。它将在逗号上拆分它,并将引号解析为值周围的分隔符。

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);
  }

关于php - 将SQL查询转换为数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56534230/

10-10 06:10