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 關注
- 128 瀏覽
添加回答
舉報