仅返回最后一个值的手动php数组

仅返回最后一个值的手动php数组,php,gravity-forms-plugin,Php,Gravity Forms Plugin,我正在使用其中一个预渲染过滤器填充wordpress重力表单 我正常地遵循它们,并使用每次都有效的foreach循环动态填充$items[] 但这次我不是为$items[]数组动态创建一个php foreach循环,而是手动将每个值输入到一个数组中 请看下面 add_filter("gform_pre_render", "populate_dropdown_bike_make"); add_filter("gform_admin_pre_render", "populate_dropdown_b

我正在使用其中一个预渲染过滤器填充wordpress重力表单

我正常地遵循它们,并使用每次都有效的foreach循环动态填充$items[]

但这次我不是为$items[]数组动态创建一个php foreach循环,而是手动将每个值输入到一个数组中

请看下面

add_filter("gform_pre_render", "populate_dropdown_bike_make");
add_filter("gform_admin_pre_render", "populate_dropdown_bike_make");
function populate_dropdown_bike_make($form){
    if($form["id"] != 4)
        return $form;

    $items = array();
    $items[] = array(
        "text" => "", "value" => null,
        "text" => "YAMASAKI", "value" => "YAMASAKI",
        "text" => "YAMOTO", "value" => "YAMOTO",
        "text" => "YEZDI", "value" => "YEZDI",
        "text" => "YIBEN", "value" => "YIBEN",
        "text" => "YIYING", "value" => "YIYING",
        "text" => "YONGKANG", "value" => "YONGKANG",
        "text" => "YONGWANG", "value" => "YONGWANG",
        "text" => "ZEBRETTA", "value" => "ZEBRETTA",
        "text" => "ZENNCO", "value" => "ZENNCO",
        "text" => "ZEPII", "value" => "ZEPII",
        "text" => "ZERO-MOTORCYCLES", "value" => "ZERO-MOTORCYCLES",
        "text" => "ZEV", "value" => "ZEV",
        "text" => "ZHEJIANG", "value" => "ZHEJIANG",
        "text" => "ZHENHUA", "value" => "ZHENHUA",
        "text" => "ZHIXI", "value" => "ZHIXI",
        "text" => "ZHONGYU", "value" => "ZHONGYU",
        "text" => "ZING", "value" => "ZING",
        "text" => "ZIPPI", "value" => "ZIPPI",
        "text" => "ZIPSTAR", "value" => "ZIPSTAR",
        "text" => "ZONGSHEN", "value" => "ZONGSHEN",
        "text" => "ZONTES", "value" => "ZONTES",
        "text" => "ZUNDAPP", "value" => "ZUNDAPP"   
    );

    foreach($form["fields"] as &$field)
        if($field["id"] == 45){           
            $field["choices"] = $items;
        }

    return $form;

}

现在的问题是,它只返回下拉列表中最后一个选项ZUNDAPP

有人知道为什么会这样吗


谢谢

您一遍又一遍地重新定义相同的键

$items[] = array(
    "text" => "", "value" => null,
    "text" => "YAMASAKI", "value" => "YAMASAKI"
)
给出:

array(array(
    "text" => "YAMASAKI",
    "value" => "YAMASAKI"
));

在我看来,你打算:

//    v-- no [] here
$items = array(
    array("text" => "", "value" => null),
    array("text" => "YAMASAKI", "value" => "YAMASAKI"),
    // etc.

你一次又一次地重新定义相同的键

$items[] = array(
    "text" => "", "value" => null,
    "text" => "YAMASAKI", "value" => "YAMASAKI"
)
给出:

array(array(
    "text" => "YAMASAKI",
    "value" => "YAMASAKI"
));

在我看来,你打算:

//    v-- no [] here
$items = array(
    array("text" => "", "value" => null),
    array("text" => "YAMASAKI", "value" => "YAMASAKI"),
    // etc.

我认为问题在于您构建的阵列结构

只添加一个元素(即数组)。在数组本身中,可以通过重新定义以前的所有键来覆盖它们

使用以下语法:

$items[] = array("text" => "", "value" => null);
$items[] = array("text" => "YAMASAKI", "value" => "YAMASAKI");
也可以直接分配阵列:

$items = array(
    array("text" => "", "value" => null),
    array("text" => "YAMASAKI", "value" => "YAMASAKI"),
    // ...  
);

我认为问题在于您构建的阵列结构

只添加一个元素(即数组)。在数组本身中,可以通过重新定义以前的所有键来覆盖它们

使用以下语法:

$items[] = array("text" => "", "value" => null);
$items[] = array("text" => "YAMASAKI", "value" => "YAMASAKI");
也可以直接分配阵列:

$items = array(
    array("text" => "", "value" => null),
    array("text" => "YAMASAKI", "value" => "YAMASAKI"),
    // ...  
);

每次在
$items
中插入内容时,都会覆盖
文本和

您可能需要插入以下值:

$items = array( 'key' => 'value', .... )
或按照以下步骤将单个条目包装到数组中:


每次在
$items
中插入内容时,都会覆盖
文本和

您可能需要插入以下值:

$items = array( 'key' => 'value', .... )
或按照以下步骤将单个条目包装到数组中:

这是你的问题。这将导致数组变成多维数组。您的代码假定它仍然是一维数组,这就是为什么它只输出最后一个元素的原因

将其更改为:

$items = array(
例如:

$arr = array();
$arr[] = array('foo' => 'bar');
print_r($arr);
根据您的逻辑,输出应为:

Array
(
    [foo] => bar
)
但实际上:

Array
(
    [0] => Array
        (
            [foo] => bar
        )

)
这是你的问题。这将导致数组变成多维数组。您的代码假定它仍然是一维数组,这就是为什么它只输出最后一个元素的原因

将其更改为:

$items = array(
例如:

$arr = array();
$arr[] = array('foo' => 'bar');
print_r($arr);
根据您的逻辑,输出应为:

Array
(
    [foo] => bar
)
但实际上:

Array
(
    [0] => Array
        (
            [foo] => bar
        )

)

数组只有两个条目,一个带有text键,另一个带有value键。您在每一行上都重写了值,因此在最后,ZUNDAPP是其中唯一的值。您的数组只有两个条目,一个具有text键,另一个具有value键。你在每一行上都写了过多的值,所以在最后,ZUNDAPP是其中唯一的值。好吧,我想这是有意义的,我不确定这是否是一种较短的封装itI的方法。我只是想说,你是否需要像fritz写的那样在每一行上使用数组。Thanks@Joshc是的,你需要(我现在编辑的评论是错误的,对不起)。否则,就不会插入数据值数组。好吧,我想这是有意义的,我不确定这是否是一种较短的封装itI的方法。我只是想说,您是否需要像fritz写的那样在每一行上插入数组。Thanks@Joshc是的,你需要(我现在编辑的评论是错误的,对不起)。否则,您将无法插入数据值数组。谢谢您的回答谢谢您的回答