Я очень в замешательстве от использования вами массива $selectedProtocols
.
Рассмотрим эту строку:
// sp = selectedProtocols ... too much typing otherwise!
$sp[$sp[1]]
// given that $sp == [1, 2]
// resolve the inner
$sp[1] == 2 // therefore:
$sp[$sp[1]] == $sp[2]
// but there is no $sp[2], hence the error
Я бы изменил это на:
$sp = array(1 => 0, 2 => 0);
foreach (array_keys($sp) as $id) {
$result = mysql_query("SELECT throughput FROM session where mainProtocol = '$id'");
while($row = mysql_fetch_array($result)) {
$sp[$id] += $row['throughput'];
}
}
Ответ на комментарий:
когда массив sp равен (1 => 0,2 => 34,6 => 67,15 => 56 ...)
Чтобы перебрать массив, в котором нет последовательных (или даже числовых) ключей, вы можете использовать несколько методов, но самый простой из них - foreach
. Существует две формы цикла foreach
:
$array = array(1=>0, 2=>34, 6=>67, 15=>56);
// the first form:
foreach ($array as $value) {
echo $value; // "0", "34", "67", "56"
}
// the second form:
foreach ($array as $key => $value) {
echo $key . "," . $value; // 1,0 2,34 6,67 15,56
}
Итак, вы видите, что можете использовать второй метод, чтобы получить все идентификаторы и значения из массива.