Php 显示我可以从阵列中拉出每个吗?
从多维数组中提取元素时遇到问题 下面是我的代码:Php 显示我可以从阵列中拉出每个吗?,php,arrays,pdo,Php,Arrays,Pdo,从多维数组中提取元素时遇到问题 下面是我的代码: $ShowTables = $Con->prepare("SHOW TABLES"); $ShowTables->execute(); $ShowTResults = $ShowTables->fetchAll(); 如果Iprint\r($ShowTResults)我得到这个多维数组: Array ( [0] => Array ( [Tables_in_alltables] => userinformat
$ShowTables = $Con->prepare("SHOW TABLES");
$ShowTables->execute();
$ShowTResults = $ShowTables->fetchAll();
如果Iprint\r($ShowTResults)代码>我得到这个多维数组:
Array (
[0] => Array ( [Tables_in_alltables] => userinformation [0] => userinformation )
[1] => Array ( [Tables_in_alltables] => users [0] => users )
)
在加载每个新表时,它会添加数组的另一个维度。我想把每个表名从多维数组中拉出来,放到一个新的数组中,我可以在未来的计划中使用它
有人有什么想法吗
我尝试了1foreach
Loop;但这并没有起到公正的作用 我尝试了一个解决方案:也许不像其他人会做的那样,这是完全尊重的。但这是我的:
$DatabaseTables = array();
foreach($ShowTResults AS $ShowTResult)
{
foreach ($ShowTResult AS $ShowT)
{
$DatabaseTables[] = $ShowT;
}
}
$DatabaseTables = array_unique($DatabaseTables); //Deletes Duplicates in Array
unset($ShowTResult);
unset($ShowT); // Free up these variables
print_r($DatabaseTables);
您希望以数组的形式获取第一列的所有结果:
$ShowTResults = $Con->query("SHOW TABLES")->fetchAll(PDO::FETCH_COLUMN, 0);
print_r($ShowTResults);
这将为您提供:
Array (
[0] => userinformation
[1] => users
)
我想这就是你要找的
另一种变体(稍微复杂一点,但适合类似但差别不大的情况)是将结果作为函数(PDO::fetch_FUNC
)获取,并直接映射结果:
$ShowTResults = $ShowTables->fetchAll(PDO::FETCH_FUNC, function($table) {
return $table;
});
我不明白这个查询/行的结构和含义——你能解释一下用法以及如何打印结果吗?打印结果:print\r($ShowTResults)
同样,使用该SQL查询,您不需要prepare()
(只执行一次,不涉及其他变量),因此您可以直接query
。查看编辑后的答案。我认为准备可以防止可能的注射?@user1902584:是的。但是由于查询没有涉及任何变量,因此不可能进行注入。请注意,我刚刚编辑了答案,因为有一个更简单的方法。我现在把它放在上面了。这更适合您的情况,函数映射适用于更复杂的情况。