Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 具有附加布尔值的多维数组_Php_Arrays_Multidimensional Array - Fatal编程技术网

Php 具有附加布尔值的多维数组

Php 具有附加布尔值的多维数组,php,arrays,multidimensional-array,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

因此,我仍然掌握了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循环,从而吐出表单元素

如果所有型号都有所有可用的
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);
$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 ) 
                          )
);
但是,如果不共享所有
长度
值(更有可能),您可能会有以下情况:

$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);
$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
    循环中

  • 冗余

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

  • 键=>值

    通常有一个
    for
    foreach
    循环,用于循环元素。在那里,您需要有一个对
    s和
    s的简单访问权限,因此尽量不要使您的结构复杂化

示例

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

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

$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
  }
}

那么问题是什么呢?如果你需要的话,加上那些布尔值。”型号'=>阵列(“启动9.5”=>正确,“启动12.5”=>错误,“启动15.5”=>正确,“启动18.5”=>错误)。或者我误解了你?我不知道我可以加上它。要访问bool,我是否只需使用
$divers[models][
?要访问这些bool,您应该提供您想要访问的密钥:例如$divers['models']['Launch 9.5']将返回true(例如我在第一条评论中的示例)$divers['models']['Launch 12.5']将返回false是的,可以!但是我现在如何访问“Launch9.5”来响应这个名称呢?在我的循环中,
$model
返回名称之前,现在它只返回一个键。@Packy这个问题的解决方案在我的答案中介绍,在这里你可以访问名称,比如我使用的foreach示例中的“lauch 9.5”@Packy,使用
as$name=>$value
而不是
as$model
,你可以访问这两个名称。