Это только личный проект. Так что да, он использует MySQL, но это не коммерческий и только работает на localhost. Так что, не обязательно, я обновляю его до mysqli или чего-то еще. я также не разработчик и баловаться с php для личных баз данных. Итак, прости меня, если мой код ужасен, я хочу улучшить, если ты захочешь поделиться.
Я построил цикл while для заполнения массивов. Это позволяет мне проверять эти массивы в другом цикле while. Цель состоит в том, чтобы повысить эффективность и не просто запустите циклы, внутри циклов, внутри циклов.
По большей части это работает нормально. Я пытаюсь расширить возможности и преодолеть препятствие.
// query to pull data. / GROUP BY id
// pulls multiple results, but I merely want the results for each distinct ID.
$r = 0;
$u = 0;
$n = 0;
$checkarr=array();
$mustarr=array();
$badarr=array();
$idarr=array();
while ($row = mysql_fetch_array($qry)) {
$check = $row['tbl.check'];
$must = $row['tbl.must'];
$thisid = $row['tbl.id'];
if ($check == 1) {
$checkarr[] = $thisid;
$n++; }
if ($must == 'R') {
$badarr[] = $thisid;
$r++; }
if ($must == 'U') {
$mustarr[] = $thisid;
$u++; }
}
Это работает для правильного заполнения массивов идентификатором для последующего сравнения. Я могу просто бежать in_array([id], $checkarr)
чтобы увидеть, если они совпадают.
Что я пытаюсь сделать и терпеть неудачу… это заполнить какой-то ассоциативный массив так, чтобы каждый $thisid
связано с окончательными значениями $n
, $r
, а также $u
, Таким образом, позже я могу как-то позвонить $thisid['r']
и получить общую стоимость $r
связан с этим идентификатором.
Что-то вроде….
(Псевдокод)
if((in_array($loopid, $mustarr)) {
//display value of $r associated with the $loopid
}
Я пробовал циклы foreach () и просто не понял это правильно.
Как я могу связать суммарные значения $ n, $ r и $ u с $ thisid? Прежде всего, чтобы я мог вытащить каждое значение вне этого конкретного цикла?
Любые советы будут оценены.
Вы могли бы сделать $thisid
и ваши другие массивы ассоциативные массивы.
$r = 0;
$u = 0;
$n = 0;
$checkarr = array();
$mustarr = array();
$badarr = array();
$idarr = array();
while ($row = mysql_fetch_array($qry)) {
$check = $row['tbl.check'];
$must = $row['tbl.must'];
$thisid = array('id' => $row['tbl.id'], 'n' => $n, 'r' => $r, 'u' => $u);
if ($check == 1) {
$checkarr[$row['tbl.id']] = $thisid; // To make it easier to find $thisid later
$n++; }
if ($must == 'R') {
$badarr[$row['tbl.id']] = $thisid;
$r++; }
if ($must == 'U') {
$mustarr[$row['tbl.id']] = $thisid;
$u++; }
}
Если вы хотите проверить, есть ли идентификатор в одном из массивов, вы можете использовать array_key_exists
:
if(array_key_exists($loopid, $mustarr)){
echo $mustarr[$loopid]['r']; // Displaying $r for $loopid
}
если я правильно понимаю, вы можете просто
if ($must == 'R') {
$badarr[$r] = $thisid;
$r++; }
и вы можете получить значение id по номеру итерации
или наоборот
if ($must == 'R') {
$badarr[$thisid] = $r;
$r++; }
получить номер итерации по идентификатору