用于解析多维数组的PHP函数?

3
我运行了一个查询并使用fetchAll()
$query = "SELECT uid, kill_count FROM users WHERE curmid=:mid AND status='1'";
...
$row = $stmt->fetchAll();

该返回此数组的函数:
Array ( 
 [0] => Array ( [uid] => 105 [fcount] => 1 ) 
 [1] => Array ( [uid] => 106 [fcount] => 2 ) 
 [2] => Array ( [uid] => 107 [fcount] => 0 ) 
 [3] => Array ( [uid] => 108 [fcount] => 1 ) 
 [4] => Array ( [uid] => 109 [fcount] => 1 ) 
)  

我有一个循环需要运行,基本上是这样的:
$problist = array();
foreach ($row as $key => $value) {
    if ($value == 0) {
        array_push($problist, $key, $key, $key, $key, $key);
    } elseif ($value == 1) {
        array_push($problist, $key, $key, $key);
    } elseif ($value >= 2) {
        $problist[] = $key;
    }
}

当然,那个循环不起作用,因为它没有引用数组中的适当值。在这个假设中,我正在寻找的输出是:$problist =
array(15) { 
[0]=> string(3) "105" 
[1]=> string(3) "105" 
[2]=> string(3) "105" 
[3]=> string(3) "106" 
[4]=> string(3) "107" 
[5]=> string(3) "107" 
[6]=> string(3) "107" 
[7]=> string(3) "107" 
[8]=> string(3) "107" 
[9]=> string(3) "108" 
[10]=> string(3) "108" 
[11]=> string(3) "108"
[12]=> string(3) "109" 
[13]=> string(3) "109" 
[14]=> string(3) "109" 
}  

我已经阅读并尝试了一些方法,但无法确定应该使用哪些php函数来使其工作。我尝试了end()、reset()、array_shift()等函数。当然,很可能是由于我的无知,我没有正确地使用它们。感谢您的帮助。 [也许有更好的查询格式化方式?]
2个回答

3
$problist = array();
foreach ($row as $value) {
    if ($value['fcount'] == 0) {
        array_push($problist, $value['uid'], $value['uid'], $value['uid'], $value['uid'], $value['uid']);
    } elseif ($value['fcount'] == 1) {
        array_push($problist, $value['uid'], $value['uid'], $value['uid']);
    } elseif ($value['fcount'] >= 2) {
        $problist[] = $value['uid'];
    }
}

你完全没有考虑到 fcount - David
呵呵...复制/粘贴很糟糕。 :) - dikirill
非常感谢。你实际上已经回答了我另一个问题:http://stackoverflow.com/questions/16082020/select-a-user-according-to-set-probability ,如果你愿意可以真正回答它,以获得学分。 - David

1
你正在遍历整个结果集,所以$value是一个看起来像数组的数组:
$value = array(
    'uid' => 105,
    'fcount' => 1
);

因此,在您的代码中,您应该使用$value ['uid']而不是$key,并且使用$value ['fcount']而不是$value


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接