1

如何在循环中向具有键值对的数组递增(添加更多值)。

$field['choices'] = array(
   'custom' => 'My Custom Choice'
 );

假设我想从另一个数组中再添加三个选择?

我想要实现的输出:

$field['choices'] = array(
  'custom1' => 'My Custom Choice1'
  'custom2' => 'My Custom Choice2'
  'custom3' => 'My Custom Choice3'
  'custom4' => 'My Custom Choice4'
);
4

5 回答 5

2

迭代并将索引连接到键中的前缀:

for ($i = 2; $i <= 4; $i++) {
    $field['choices']['custom' . $i] = 'My Custom Choice' . $i;
}
于 2013-08-16T21:51:43.007 回答
0

您可以使用数组函数进行排序或合并。

或者你可以这样做:

$field['choices']['custom'] = 'My Custom Choice';
$field['choices']['custom2'] = 'My Custom Choice';
$field['choices']['custom3'] = 'My Custom Choice';
$field['choices']['custom4'] = 'My Custom Choice';
于 2013-08-16T21:45:15.040 回答
0

你会想要使用array_merge().

从手册:

array array_merge ( array $array1 [, array $... ] )

将一个或多个数组的元素合并在一起,以便将一个数组的值附加到前一个数组的末尾。它返回结果数组。

如果输入数组具有相同的字符串键,则该键的后一个值将覆盖前一个。但是,如果数组包含数字键,则后面的值不会覆盖原始值,而是会被追加。

于 2013-08-16T21:45:17.990 回答
0

正如您在问题中概述的那样:

$field['choices'] = array(
   'custom' => 'My Custom Choice'
 );

所以:

$array = $field['choices'];

简化以下示例:

$otherArray = range(1, 3); // another array with 3 values

$array += $otherArray; // adding those three values (with _different_ keys)

完毕。带有数组的+运算符称为联合。你发现它记录在这里:

因此,只要您要添加的另一个数组与您添加它的一个数组相比具有三个不同的键,您就可以使用+运算符。

于 2013-08-16T22:42:48.697 回答
0

这是我用来将$otherArray值添加到自定义增量数组键值的代码

if (count($field['choices']) === 1) {
    $field['choices']['custom1'] = $field['choices']['custom'];
    unset($field['choices']['custom'];
    $i = 2;
} else {
    $i = count($field['choices']) + 1;
}//END IF
foreach ($otherArray as $key => $val) {
    $field['choices']['custom' . $i] =  $val;//Where val is the value from the other array
    $i++;
}//END FOREACH LOOP
于 2013-08-16T22:49:35.300 回答