У меня есть массив идентификаторов, используемых для выполнения запросов mysqli в цикле foreach (приведенный ниже код является лишь примером - массив будет содержать более 50+ элементов / идентификаторов). Для каждого элемента / идентификатора массива я запрашиваю массив, который затем включаю в массив compData. Однако я не уверен, как динамически определять массивы в цикле foreach. Я был бы очень признателен, если бы вы могли проверить, правильно ли я использую $ {$ val} в приведенном ниже коде или что-то не так. Спасибо.
$idArray = array(
"List1",
"List2",
);
$compData = array();
foreach($idArray as $val) {
$sth = mysqli_query($conn, "SELECT * FROM {$tableName} WHERE ID = {$val}");
${$val} = array();
while($r = mysqli_fetch_array($sth)) {
For ($n = 1; $n <= $CI_NOYEARS; $n++){
${$val}['data'][] = $r[$n];
}
}
$compData[{$val}] = ${$val}
}
foreach($compData['List1'] as $result) {
For ($n = 0; $n <= $CI_NOYEARS; $n++){
echo $result[$n];
}
}
Приведенный выше код не работает и не отображает никаких данных из массива $ compData. Ниже приведен пример, который прекрасно работает, когда я выполняю код с использованием идентификаторов напрямую.
$sth = mysqli_query($conn, "SELECT * FROM {$tableName} WHERE ID = 'List1'");
$List1 = array();
while($r = mysqli_fetch_array($sth)) {
For ($n = 1; $n <= $CI_NOYEARS; $n++){
$List1['data'][] = $r[$n];
}
}
$companyData = array();
$companyData['List1'] = $List1;
foreach($compData['List1'] as $result) {
For ($n = 0; $n <= $CI_NOYEARS; $n++){
echo $result[$n];
}
}