Php 在foreach循环中创建一个数组实例
我在这里有一个独特的处境,我不确定这是否是正确的方法;我愿意听取建议 我有一个函数,它获取数据库中的所有表名,并将它们存储到数组中。下一个新解析的项($id)将根据此表名数组传递,并且任何匹配项都将从此数组中取消设置。这给我留下了一些已经停产的剩菜 代码如下:Php 在foreach循环中创建一个数组实例,php,arrays,pdo,foreach,unset,Php,Arrays,Pdo,Foreach,Unset,我在这里有一个独特的处境,我不确定这是否是正确的方法;我愿意听取建议 我有一个函数,它获取数据库中的所有表名,并将它们存储到数组中。下一个新解析的项($id)将根据此表名数组传递,并且任何匹配项都将从此数组中取消设置。这给我留下了一些已经停产的剩菜 代码如下: function itemDiscontinued($dbh, $id, $detail) { try { $tableList = array(); $result = $dbh->q
function itemDiscontinued($dbh, $id, $detail) {
try {
$tableList = array();
$result = $dbh->query("SHOW TABLES");
while ($row = $result->fetch()) {
$tableList[] = $row[0];
}
$key = array_search($id, $tableList);
unset($tableList[$key]);
print_r($tableList);
}
catch (PDOException $e) {
echo $e->getMessage();
}
}
问题在于,由于函数处于foreach循环(解析过程)中,数组$tablelist会不断地重新创建自身。我只需要创建一个实例就可以使用它。如果这个问题有点难理解,我会先道歉。是的,真的很难理解。也许你可以试试这个:
function itemDiscontinued($dbh, $id, $detail) {
static $tables = array();
if (!$tables) {
$tables = getTableList($dbh);
}
$key = array_search($id, $tables);
unset($tables[$key]);
print_r($tables);
}
function getTableList($dbh) {
try {
$tableList = array();
$result = $dbh->query("SHOW TABLES");
while ($row = $result->fetch()) {
$tableList[] = $row[0];
}
return $tableList;
} catch (PDOException $e) {
echo $e->getMessage();
}
}
一个带有额外参数的数组_push怎么样
function itemDiscontinued($dbh, $id, $detail, $outputArray) {
try {
$result = $dbh->query("SHOW TABLES");
while ($row = $result->fetch()) {
array_push($outputArray, $row[0]);
}
$key = array_search($id, $outputArray);
unset($outputArray[$key]);
return $outputArray; // use this for subsequent run on the foreach statment
}
catch (PDOException $e) {
echo $e->getMessage();
}
}
只需事先创建它,并将
$tablelist
传递到函数中即可。以下是我迄今为止所得到的信息,即使您建议进行了更改<代码>338142:表格已存在-->无价格变动发现2阵列([0]=>113340[1]=>116516[3]=>20731[4]=>25500[5]=>322320[6]=>322459[7]=>323003[8]=>325958[9]=>325961[10]=>325963[11]=>326002[12]=>326035139431:表格已存在-->无价格变动发现3阵列([0]=>113340[1]=>116516]=>139431=>20731[4]=>25500[5]=>322320[6]=>322459[7]=>323003[8]=>325958[9]=>325961[10]=>325963[11]=>326002[12]=>326035请注意数组是$key之前的数字:)谢谢你!这正是我想要的。它耗尽了该数组的剩余项。:)谢谢dan的努力,但上面的代码是我的解决方案。