Я создаю веб-приложение, имеющее довольно большую (10K строк) справочную таблицу.Заполнение динамически созданных массивов в PHP
Ссылка на таблицу имеет категорию, идентификатор, описание.
Поскольку я использую эту ссылку, данные для заполнения раскрывающихся ящиков и т. Д., Я пытаюсь помещать их в массивы. Сначала я их в одном большом массиве, но мне кажется, что эффективнее иметь массив для каждой категории в справочной таблице.
Динамические имена переменных создаются, но заполнение их из другого массива не работает.
$r_refcats = mysqli_query($global_dbh,"select distinct(cat) from reference");
while(($row = mysqli_fetch_array($r_refcats)) != false){ $$row[0]=array();};
$r_references = mysqli_query($global_dbh,"select cat,id,description from reference");
while(($row = mysqli_fetch_array($r_references)) != false) { $$row[0]=array($row);}
Потому что я не могу использовать $$row[0][]
в последней строке, он держит перезапись то же значение :)
Любые советы о том, как сделать это правильно?
Я думаю, что ваша предпосылка неверна: наличие большого количества динамически названных переменных не сделает PHP более эффективным, чем один массив с большим количеством динамических клавиш; Фактически, внутренние данные будут очень похожи. То, что это определенно сделает, это сделать ваш код более трудным для чтения и предотвратить использование встроенных функций массива или даже разделение кода на отдельные функции (так как вам придется каким-то образом передать все ваши переменные сразу). – IMSoP
Мне нужно много раз перебирать массив, чтобы заполнить выпадающие окна. Это должно сэкономить некоторые условия, и каждый раз, когда я разделяю массивы в категориях, нужно циклически перебирать массив. Или я неправильно понимаю это? – MarlonB
Вам не нужен один список со всеми входами, но внешний массив с категориями для ключей и отдельными списками для значений намного проще, чем у вас здесь. Доступ к одной категории, имя которой вы знаете заранее, просто потребует от вас ввести '$ categories ['foo']' вместо '$ foo'. OTOH, зацикливание * всех * категорий с полностью отдельными переменными было бы почти невозможным. – IMSoP