【发布时间】:2017-10-21 10:41:06
【问题描述】:
我尝试在 PHP 关联数组中生成动态值列表,但我做不到。
1) 使用此代码
foreach ($states as $state) {
$state_options[$state->country()->name()][$state->ID()] = $state->name();
}
我得到
<optgroup label="France">
<option value="01 - Ain">01 - Ain</option>
<option value="02 - Aisne">02 - Aisne</option>
</optgroup>
我在值中获取名称而不是 ID。
2) 使用此代码
foreach ($states as $state) {
$state_options[$state->country()->name()][$state->name()] = $state->ID();
}
我得到
<optgroup label="France">
<option value="01 - Ain">77</option>
<option value="02 - Aisne">78</option>
<option value="03 - Allier">79</option>
</optgroup>
我可以得到身份证。
我的目标是获得
<optgroup label="France">
<option value="77">01 - Ain</option>
<option value="78">02 - Aisne</option>
<option value="79">03 - Allier</option>
</optgroup>
非常感谢您的帮助
22/10/17 cmets 后编辑
我的完整代码
add_filter( 'gform_address_types', 'france_address_type' );
function france_address_type( $address_types ) {
$state_options = array('' => array('' => ''));
$states = EEM_State::instance()->get_all_active_states();
if (! empty($states)) {
foreach ($states as $state) {
if ($state instanceof EE_State) {
$state_options[$state->country()->name()][$state->ID()] = $state->name();
}
}
}
$address_types[ 'france' ] = array(
'label' => 'France',
'country' => 'France',
'zip_label' => 'Code Postal',
'state_label' => 'Département',
'states' => $state_options
);
return $address_types;
}
【问题讨论】:
-
现在显示生成
selectamdoptions的代码 -
你试过颠倒
$state_options[$state->country()->name()][$state->name()] = $state->ID()中的值和键,所以交换name()和ID()。 -
@u_mulder 我已经写了完整的代码。
-
@NigelRen 你建议“$state_options[$state->country()->name()][$state->name()] = $state->ID();” ?导致它在我的帖子中是我的解决方案 2。此代码正在运行。
标签: php arrays foreach associative-array