-5

我有以下代码:

foreach ($model_name as $md) {
    foreach ($years as $y) {
        $model_w_year[$y] = $md;
    } 
}

这显然不起作用。它输出的数组如下所示:

Array
(
    [1994] => Maxima
    [1995-1998] => Maxima
)

我希望它看起来像这样:

Array
(
    [1994] => Sentra
    [1995-1998] => Maxima
)

Model_name 是上一页的 $_SESSION['model_name'] ,years 是表单数组

echo "<form action='engine.php' method='post'>";
for ($i = 0; $i < count($model_name); $i++) {
   echo "Enter year or year range for: ", $model_name[$i], 
       " <input type='text' name='years[]'></input><br />";
}

这是我拥有的所有数组结构:

Model make: 
Nissan
model name: 
Array
(
    [0] => Sentra
    [1] => Maxima
)

Number of models:  
2
Number of years: 
Array
(
    [0] => 1994
    [1] => 1995-1998
)

Model with Year: 
Array
(
    [1994] => Maxima
    [1995-1998] => Maxima
)

答:是的,我希望年份是关键,模型是价值。

4

2 回答 2

1

$model_name如果您试图以某种方式从and$years数组中获取某些键值分组,那么您的循环结构似乎没有意义。因为对于每个型号名称,您将遍历每个可用年份并将值设置为当前型号名称。因此,无论您的阵列中的最后一个型号名称是什么,最终都会为所有型号年份设置。

根据您的问题,模型名称数组和年份数组中的匹配值看起来将具有相同的数字索引。所以,你可能会使用类似的东西array_combine()来合并这些值

$merged_array = array_combine($years, $model_name);

这将$years用作数组键和$model_name值。

于 2013-04-01T16:05:32.500 回答
1

Mike Brant 的回答解释了为什么你的代码不能按照你想要的方式工作。如果我理解正确,您有两个数组,$model_name并且,用户为第 i:th 模型输入的年份$years在哪里。$years[$i]也就是说,数组看起来像这样

Array (
  [???] => Sentra
  [???] => Maxima
)

还有这个

Array (
  [0] => 1994
  [1] => 1995-1998
)

在这种情况下,我认为这段代码应该可以解决问题:

$i = 0;
foreach ($model_name as $md) {
  $model_w_year[$years[$i]] = $md;
  $i++;
}

它不是很漂亮,但我认为它应该工作。

于 2013-04-01T16:26:54.840 回答