基本上我正在尝试创建以下数组。
$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将帮助您通过数组的每个索引。祝您有美好的一天玛丽!!