我已经试了好几天了,想把我的查询列作为数组,但是还没有成功。
我在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/