массивы — PHP хранит значение из цикла While ассоциативным способом для внешнего использования?

Это только личный проект. Так что да, он использует 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? Прежде всего, чтобы я мог вытащить каждое значение вне этого конкретного цикла?

Любые советы будут оценены.

0

Решение

Вы могли бы сделать $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
}
1

Другие решения

если я правильно понимаю, вы можете просто

if ($must == 'R') {
$badarr[$r] = $thisid;
$r++;  }

и вы можете получить значение id по номеру итерации
или наоборот

if ($must == 'R') {
$badarr[$thisid] = $r;
$r++;  }

получить номер итерации по идентификатору

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector