具有额外布尔值

时间:2016-02-05 21:14:31

标签: php arrays multidimensional-array

所以我仍然掌握PHP数组以及正确的方法。基本上我有一个产品,它有一组共享选项,但也有特定于模型的选项。现在我有这样的

$divers = array(
        'models' => array("Launch 9.5","Launch 12.5","Launch 15.5", "Launch 18.5"),
        'lengths' => array(47.5, 47, 46.5, 46, 45.5, 45, 44.5, 44, 43.5, 43, 42.5, 42),
    );

所以每个模型都有相同的长度,但我也需要在模型中添加一个布尔值(true或false)。所以9.5会是真的,但12.5会是假的(基本上我们在9.5中有一个选项,但我们不在12.5)。我该怎么做?有没有更好的方法来设置阵列?我选择这种方式,所以我可以做foreach循环,吐出表单元素。

2 个答案:

答案 0 :(得分:0)

如果所有模型都具有所有可用的length值,您可能会这样:

$divers = array(
    "Launch 9.5"    =>    array(
                             "bool"      => false, 
                             "option"    => true
                          ),
    "Launch 12.5"   =>    array(
                             "bool"      => false, 
                             "option"    => true
                          ),
    "Launch 15.5"   =>    array(
                             "bool"      => false, 
                             "option"    => true
                          )
);

$length = array(47.5, 47, 46.5, 46, 45.5, 45, 44.5, 44, 43.5, 43, 42.5, 42);

但如果不共享所有length值(更有可能),您可能会这样:

$divers = array(
    "Launch 9.5"    =>    array(
                             "bool"      => false, 
                             "option"    => true, 
                             "length"    => array( 47.5, 47, 50 ) 
                          ),
    "Launch 12.5"   =>    array(
                             "bool"      => false, 
                             "option"    => true, 
                             "length"    => array( 45, 43, 49 ) 
                          ),
    "Launch 15.5"   =>    array(
                             "bool"      => false, 
                             "option"    => true, 
                             "length"    => array( 46.5, 48, 50 ) 
                          )
);

措施是什么

在决定使用什么数组结构时要考虑的措施是:

  • <强>操纵

    考虑一次可能需要使用多少数据,例如for循环

  • <强>冗余

    不要重复所有实体共享的数据

  • key => value

    通常,您会使用forforeach循环来循环遍历元素。您需要对keyvalue进行简单访问,因此请尽量不要使结构复杂化。

示例

foreach( $divers as $d_name => $d_value ){
    echo $d_name;           // Launch 9.5
    echo $d_value['bool'];  // false
}

答案 1 :(得分:0)

您可以使用已有的数组值作为数组键,然后添加一个布尔值作为值。

$divers = array(
  'models' => array("Launch 9.5" => true,"Launch 12.5" => false,"Launch 15.5", "Launch 18.5"),
  'lengths' => array(47.5, 47, 46.5, 46, 45.5, 45, 44.5, 44, 43.5, 43, 42.5, 42),
);

foreach($divers['models'] as $model) {
  if($model === true) {
    // do stuff
  }
}