2013-04-18 2 views
3

я выполнить запрос и fetchAll()PHP-функции для синтаксического анализа многомерного массива?

$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() и другие. Несомненно, что в моем невежестве я не использовал их правильно. Спасибо за помощь.

[Возможно, есть даже лучший способ форматирования мой запрос?]

ответ

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']; 
    } 
} 
+0

Вы вообще не учитывали 'fcount'. – David

+0

Хехе ... Копия/Вставить отстой. :) – dikirill

+0

Очень ценится. Вы практически ответили на мой вопрос: 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.

Смежные вопросы