基本上我正在尝试创建以下数组。
$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中是否有任何预先构建的功能可以做到这一点?
答案 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将帮助您传递数组的每个索引。 祝玛利亚度过美好的一天!