У меня есть многомерный массив баз данных, который был сгенерирован с моего сервера:
// place db tables into array
$da_db = array(
'test' => array(
// test.users
'users' => array('fname','lname','info'),
// test.webref_rss_details
'webref_rss_details' => array('id','title','link','description','language','image_title','image_link','item_desc','image_width','image_height','image_url','man_Edit','webmaster','copyright','pubDate','lastBuild','category','generator','docs','cloud','ttl','rating','textInput','skipHours','skipDays'),
// test.webref_rss_items
'webref_rss_items' => array('id','title','description','link','guid','pubDate','author','category','comments','enclosure','source','chan_id')
),
'db_danaldo' => array(
//code here
),
'frontacc' => array(
//code here
)
[массив] [дБ] [таблица] [поле]
Как вы видите, база данных, которая в настоящее время заполнена, относится к проекту RSS, над которым я работаю - одна таблица для каналов, другая для элементов в этом канале, на данный момент это другая проблема (на данный момент таблица «Пользователи» важно) ..
что я хочу сделать, это вернуть имена массивов / подмассивов и преобразовать каждое в переменные для использования в качестве части строки в запросе SQL, также нужен псевдоним для таблиц, с которыми мне нужно соединиться:
(e.g. SELECT * FROM 'webref_rss_items' WHERE 'chan_id' = 'test.webref_rss_details.id')
где «webref_rss_items» - это переменная, «chan_id» - это переменная, а «test.webref_rss_details.id» - это 3 переменные в объединенной строке, хотя я слышал, что объединение в запросе SQL не является хорошей практикой, безопасность в противном случае ... странная вещь всех этих значений, все, что я могу восстановить, это самый глубокий уровень, 'id':
echo "{$da_db['test']['webref_rss_details'][0]}"
но получить 'Array' или последнее значение массива, когда я пытаюсь получить доступ к именам !!
Причина этого в том, что файл PHP с запросом будет находиться в «публичной» части сервера и хотел бы использовать переменные, не имеющие коннотации к исходным именам, также это кажется более удобным поскольку переменные могут быть взаимозаменяемыми, и я не буду все время использовать один и тот же путь.
РЕДАКТИРОВАТЬ: Моя идея состоит в том, чтобы получить имена ключей от ['db']
до ['field']
. Самое близкое, что я достиг, - это итерация ключей и array_fill
в цикле foreach
, использование range()
внутри другого foreach
, array_combine
обоих, а затем var_dump
объединенного массива, например:
foreach($da_db['test'] as $key1 => $val) { //put key-names into array1 to use as values
$a = array();
$a = array_fill(0, 1, $key1);
print($key1.'<br />');
}
foreach (range(0, 2) as $number) { //array for numbers to use as keys
$b = array();
$b = array_fill(0, 1, $number);
echo $number.'<br />';
}
$c = array_combine($b, $a); //combine both for new array
print_r($c.'<br />');
Я мог бы использовать array_slice
, чтобы получить имя, которое я хочу! (долго наматывается?)
Проблема в том, что результат этого показывает только последние key => value
; в зависимости от команды (print_r, print, echo) отображается:
[2] => webref_rss_items
OR
Массив.
Надеюсь, на сегодня достаточно информации.
Я видел подобные вопросы здесь, но обычно они относятся к одному значению или одному уровню массива, но если вы уже видели этот вопрос раньше, пожалуйста, сообщите мне и направьте меня в правильном направлении.