【发布时间】:2018-08-19 04:43:03
【问题描述】:
我的foreach 不断地回显我的if 语句的第一个条件,这对我来说没有任何意义。
如果您在第一个 sn-p 中查看 foreach 内部,您会看到一个 if 来检查 $field === id || image_id 是否存在。即使没有称为id 或image_id 的单个索引,foreach 的每次迭代都会输出Im and ID: $field => $type <br> 条件。什么给了?
这是整个方法
protected function create_db_table(string $table, array $fields) {
global $wpdb;
$table_name = $wpdb->prefix."$table";
$table_charset = $wpdb->get_charset_collate();
$field_names = [];
$check_id = array_key_exists('id', $fields) ? 'id' : 'image_id';
foreach ($fields as $field => $type) {
if ($field === 'id' || 'image_id') {
echo "Im an ID: $field => $type <br>";
$field_names[] = "$field $type UNSIGNED NOT NULL AUTO_INCREMENT";
} else {
echo "Im NOT and ID: $field => $type <br>";
$field_names[] = "$field $type";
}
}
$field_names = join(",\n", $field_names);
// echo "<h1>$field_names</h1>";
$sql = "CREATE TABLE IF NOT EXISTS $table_name (
$field_names,
PRIMARY KEY ($check_id)
) $table_charset;";
require_once ABSPATH.'wp-admin/includes/upgrade.php';
dbDelta($sql);
}
我是这样称呼它的
function activation_methods() {
$slider_settings = new SliderSettings;
$slider_settings_fields = [
'id' => 'int(9)',
'transition_time' => 'int(9)',
'loop_carousel' => 'tinytext',
'stop_on_hover' => 'tinytext',
'reverse_order' => 'tinytext',
'navigation_arrows' => 'tinytext',
'show_pagination' => 'tinytext'
];
$slider_images = new SliderImages;
$slider_images_fields = [
'image_id' => 'int(9)',
'carousel_id' => 'int(9)',
'image_url' => 'text'
];
$slider_settings->create_db('bb_slidersettings', $slider_settings_fields);
$slider_images->create_db('bb_sliderimages', $slider_images_fields);
}
activation_methods();
【问题讨论】:
标签: php loops if-statement foreach conditional