我正在创建一个 PostgreSQL 表列管理工具来快速添加、删除和重新排列表中的列。到目前为止,它在简单的场景中运行良好,我只需将一列添加到末尾或删除现有列。我的每个 if
条件都会调用其他函数来追加新列、删除现有列或重建整个表;就我目前的测试而言,这些功能运行良好。
如何创建一个 if
条件,在其中调用 append 函数和删除删除函数而不是重建函数?
我有几个数组可以帮助我确定逻辑,尽管我在解决它时遇到了困难。以下是列名称数组,在这种情况下,我不应该调用 rebuild 函数,需要调用 append 函数>和删除功能。
在这种情况下,我要做的就是删除 id_2
列并添加 id_4
列,这样就无需重新排列顺序或列。
$columns_db - PostgreSQL 数据库中存在的列。
Array
(
[0] => id
[1] => id_1
[2] => id_2
[3] => id_3
)
$columns_updated - 我们要保留的数据库中的列。
Array
(
[0] => id
[1] => id_2
[2] => id_3
)
$columns_subscribed - 全部完成后列应该出现的最终方式,
Array
(
[0] => id
[1] => id_2
[2] => id_3
[3] => id_4
)
$columns_slice
$columns_slice = array_slice($columns_submitted,0,(count($columns_updated) - 1),true);
Array
(
[0] => id
[1] => id_2
)
$columns_remove - 将删除的列。
Array
(
[1] => id_1
)
$columns_append - 将创建的列。
Array
(
[id_4] => bigint
)
最佳答案
- 首先执行列删除
implode
删除后的列列表 ($before = implode($columns_updated);
)implode
添加后的列列表 ($after = implode($columns_subscribed)
)if (strpos($after, $before) === 0) {/* 添加在最后 */}
确保您use the ===
operator .
作为一句台词:
$rebuild = (strpos(implode($columns_submitted), implode($columns_updated)) !== 0);
关于PHP if条件添加和删除无需完全重建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28201291/