从值范围的php范围创建二维数组



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

$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中有任何预构建的功能可以执行此操作?

如果您喜欢单线,则可以选择:

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

除此之外,我想不出PHP中的任何预构建功能,使您的任务更容易。

可能是这样..这是两个行代码

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

您可以尝试:

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

我们正在用array_push替换$foo[],这可能很清楚。

我不太确定为什么要推他们。每个新的条目都应在阵列的末尾。他们用简单的整数迭代。那么,为什么不简单地使用$ foo [] = array('id'=> 1,'value'=> 1);

$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;
}

使用

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

for循环内部不会引起调用功能的开销,因此,将更有效。

好吧,如果您认为阵列的关键数很重要,也许您可以这样写:

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

如果您不想使用函数,请尝试

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

编辑:

或如果要使用$ i作为键

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

您也可以做:

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

如果您使用的值数组来构建另一个数组,则可以尝试以下操作:

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

以这种方式,您可以将关联索引分配给值,甚至排除相同索引的重复项。FOEACH将帮助您通过数组的每个索引。祝您有美好的一天玛丽!!

最新更新