我有一个多维数据库数组,它是从我的服务器生成的:
// 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查询中的连接不是好的做法,安全性-wise ...奇怪的是所有这些价值观,我所能追溯的是最深层次的'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 阵列。
我希望现在已经足够了。
我在这里看到过类似的问题,但通常适用于一个值,或一个数组的一个级别,但如果您之前看过这个问题,请告诉我并指出正确的方向。
答案 0 :(得分:0)
您的两个顶级数组(数据库名称和表名称)是“命名密钥”数组。字段级数组(表名数组的值)是“整数键”数组。 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%关于你如何计划访问数组中的值,所以如果你有任何其他问题,请尝试澄清那部分。