从值范围PHP创建二维数组

时间:2014-01-28 14:05:04

标签: php arrays

基本上我正在尝试创建以下数组。

$foo = array(
    1 => array(
            'id' => '1',
            'value'  => '1',
    ),
     2 => array(
            'id' => '2',
            'value'  => '2',
     )
 );

我目前正在这样做

for($i = $rangeMin; $i <= $rangeMax; $i++) {
    array_push($foo, array('id'=> $i, 'value' => $i));
}

虽然这有效,但有什么办法可以改进这段代码吗?或者PHP中是否有任何预先构建的功能可以做到这一点?

9 个答案:

答案 0 :(得分:3)

如果你喜欢单行,你可以选择:

$foo = array_map("array_fill_keys", array_fill(0, $rangeMax-$rangeMin+1, array("id", "value")), range($rangeMin, $rangeMax));

除此之外,我无法想到PHP中的任何预构建功能可以使您的任务更轻松。

答案 1 :(得分:1)

可能是这样的..它是两行代码

while($i<10)
    $arr[++$i]=array('id'=>++$k,'value'=>++$j);

答案 2 :(得分:0)

如果您不想使用功能,请尝试

for($i = $rangeMin; $i <= $rangeMax; $i++) {
    $foo[] = array('id'=> $i, 'value' => $i);
}

修改

或者如果您想使用$ i作为键

$foo[$i] = array('id'=> $i, 'value' => $i);

答案 3 :(得分:0)

您可以尝试:

for ($i = $rangeMin; $i <= $rangeMax; $i++) {
    $foo[] = array('id'=> $i, 'value' => $i);
}

我们正在将array_push替换为$foo[],这可能非常清楚。

答案 4 :(得分:0)

我不太清楚为什么要推它们。每个新条目都应该在数组的末尾。他们用简单的整数迭代。那么为什么不简单地用$ foo [] = array('id'=&gt; 1,'value'=&gt; 1)添加它们;

答案 5 :(得分:0)

$foo = array();
for($i = $rangeMin; $i <= $rangeMax; $i++) {
    $foo[] = array('id'=> $i, 'value' => $i);
}

或者,如果您的密钥始终是数组中该对的索引,请执行以下操作:

$foo = array();
for($i = $rangeMin; $i <= $rangeMax; $i++) {
    $foo[$i] = $i;
}

答案 6 :(得分:0)

使用

$foo[] = array('id'=> $i, 'value' => $i);

for循环内部不会导致调用函数的开销,因此效率会更高。

答案 7 :(得分:0)

好吧,如果您认为数组的键号很重要,也许您可​​以这样写:

$foo = array();

for($i = $min; $i <= $max; $i++)
{
    $foo[$i] = array(
        'id'    => $i,
        'value' => $i
    );
}

答案 8 :(得分:0)

你也可以这样做:

for ($foo=$rangeMin; $foo < $rangeMax; $foo++) {
   $bar[] = array("id"=>$foo,"value"=>$foo);
}

如果你使用一个值数组来构建另一个更多specefic的数组,你可以试试这个:

unset($foo);
if (count($array_of_values) > 0) {
   foreach ($array_of_values as $key=>$bar) {
      $foo[$bar["id"]] = $bar["name"];
   }
}

这样,您可以将关联索引分配给值,甚至可以排除同一索引的重复项。 foeach将帮助您传递数组的每个索引。 祝玛利亚度过美好的一天!