我有一个多维数据库数组,它是从我的服务器生成的:
// 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
)
(数组)(db)(表)(领域)
正如您所看到的,当前填充的数据库指的是我正在处理的RSS项目-一个表用于频道,另一个表用于该频道中的项目,目前这是另一个问题('Users'表现在不重要).
我想做的是返回数组/子数组名称,并将每个转换为变量,作为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文件的查询将在服务器的"公共"部分,并希望有使用变量与没有内涵的原始名称(s),它似乎更方便,因为变量可以互换,我不会使用相同的路径所有的时间。
编辑:我的想法是从['db']
到['field']
获得键名。我所达到的最接近的是在foreach
循环中迭代键和array_fill
,在另一个foreach
, array_combine
中使用range()
,然后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
或数组。
我希望这些信息足够了。
我在这里看到过类似的问题,但通常适用于一个值,或数组的一个级别,但如果你以前见过这个问题,请建议并指出正确的方向。
您的两个顶级数组(db name和table name)是"named-key"数组。字段级数组(表名数组的值)是一个"整数键"数组。PHP会自动为仅用值定义的数组添加数字索引。对于"命名键"数组,您只能通过使用您定义的键名来访问它们的值。
例如:$array1 = array('zero', 'one', 'two');
echo $array1[2]; // two
$array2 = array('zero' => 'this is zero', 'one' => 'this is one');
echo $array2['zero']; // this is zero
echo $array2[0]; // undefined
PHP提供了一个名为array_keys()
的函数,它将返回一个包含所有键名的整数索引数组。所以你可以使用整数值访问你的表数组,你可以这样做。
$da_db_test_keys = array_keys($da_db['test']);
echo $da_db_test_keys[1];
也许这对你有一点帮助。我不是100%你计划如何访问数组中的值,所以如果你有任何问题,请尽量澄清这部分。