2 回答
TA贡献1858条经验 获得超8个赞
您不能将数组的定义与条件语句相交。相反,您需要做的是首先定义您的数组,然后执行一个 if 语句,该语句将添加到数组中。尚不清楚要在数组的哪个级别添加条件内容,因此我将在一个简化的示例中对其进行展示:
$value = 1;
$myArray = array(
'name' => 'Joe',
'kids' => array(
'name' => 'Mary',
),
);
if ($value === 1) {
$myArray['kids']['hobbies'] = 'kite flying';
}
在此之后,变量$myArray将具有以下内容:
array(
'name' => 'Joe',
'kids' => array(
'name' => 'Mary',
'hobbies' => 'kite flying',
),
)
您需要将条件数据放在哪里取决于数组的完整结构,但想法是您可以通过索引访问所需的部分。
编辑:如果您可以在数组末尾添加所需的子数组,您可以使用array_push。
TA贡献1797条经验 获得超4个赞
有 3 种变体可以做到这一点:
// Variant 1
// Anonymous function, variables from the parent scope
$Value = 1;
$arr = array(
'name' => 'extraFields',
'attributes' => array(
'name' => 'portal',
),
'ifArray' => function() use ($Value) {
if ($Value == 1)
return array(
'name' => 'portal',
'value'=> '',
'attributes' => array(
'id' => '1',
'value'=> 'testportal',
),
);
}
);
print_r($arr['ifArray']());
// Variant 2
// Anonymous function, variable assignment
$arr = array(
'name' => 'extraFields',
'attributes' => array(
'name' => 'portal',
),
'ifArray' => function($Value) {
if ($Value == 1)
return array(
'name' => 'portal',
'value'=> '',
'attributes' => array(
'id' => '1',
'value'=> 'testportal',
),
);
}
);
$Value = 1;
print_r($arr['ifArray']($Value));
// Variant 3
// Ternar operator
$Value = 1;
$arr = array(
'name' => 'extraFields',
'attributes' => array(
'name' => 'portal',
),
'ifArray' => $Value != 1 ? null : array(
'name' => 'portal',
'value'=> '',
'attributes' => array(
'id' => '1',
'value'=> 'testportal',
)
)
);
print_r($arr['ifArray']);
但是,El_Vanja 建议的变体可能比这三个更清楚。
- 2 回答
- 0 关注
- 171 浏览
添加回答
举报
