我已经尝试了几天,以使我的查询行作为数组,但是还没有成功。 我有'KD.1','KD.2','KD.3','KD.4','KD.5','KD.1','KD.2','KD.3', mysql行中的'KD.4','KD.5'并想将其作为数组,因此我将获得10个数组而不是1。 接下来,我将使用它与具有相同模式的另一行组合。看起来像这样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);
}
我的函数array_combine_我从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 )
)
答案 0 :(得分:2)
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);
}