有没有更好的方法来写下面的内容?

时间:2017-06-20 15:10:20

标签: php syntax

我已经好几次面对这个“问题”了,我以同样的方式解决了这个问题,但只是想到我是如何解决的,我觉得很肮脏。

假设我使用Drupal 8并且我需要修改几个选择表单的默认值,“-Any-”通过“选择...”。

这是我每次进行的方式:

    if(isset($form['field_children_charge_value'])) {
      $form['field_children_charge_value']['#options']['All'] = t('Select...');
    }
    if(isset($form['field_evolution_target_id'])) {
      $form['field_evolution_target_id']['#options']['All'] = t('Select...');

    }
    // And so on

我觉得写得不好这样,但是,为了我的辩护,我在学习的过程中没有很多PHP理论,我直接得到了实用课程。

一个elseif表达式只能工作一次,因为第一个条件与先决条件匹配,并且它不会检查是否其他条件也能正常工作。

我用javascript也遇到过这个问题,我做了同样的事情。

那么,是否有更好的语法,如果是,那是什么?

1 个答案:

答案 0 :(得分:2)

自从我用php编写代码以来已经好几年了,但这似乎是一个普遍的“问题” 您可以将所有字段保存在数组中,然后使用 for-each 循环对每个字段执行操作:

$fields = ["field1", "field2", "..."];

foreach($fields as $field) {
  if(isset($form[$field])) {
    $form[$field]['#options']['All'] = t('Select...');
  }
}