2014-06-05 56 views
0

嘿下面是我目前正在使用的代码,它是它的工作,但我从另一个循环内多次调用它。任何人都可以提出一个更简洁的方法来重写这段代码吗PHP创建数组(代码重构)

$list = array(); 
for($i = 1; $i <= $number ; $i++) { 
      array_push($list, array('text'=>$i, 'value'=>$i)); 
} 
return $list; 

通常它只是创建一个关联数组,计数到传递给它的数字。

array (size=100) 
    0 => 
    array (size=2) 
     'text' => int 1 
     'value' => int 1 
    1 => 
    array (size=2) 
     'text' => int 2 
     'value' => int 2 
    2 => 
    array (size=2) 
     'text' => int 3 
     'value' => int 3 
    3 => 
    array (size=2) 
     'text' => int 4 
     'value' => int 4 
    4 => 
    array (size=2) 
     'text' => int 5 
     'value' => int 5 
    5 => 
    array (size=2) 
     'text' => int 6 
    value' => int 6 

很抱歉,如果这个问题是不是在这个网站很重要,我想教我更好的编码实践,我想不出还有什么地方要问这个问题。

出于某种原因,重写函数时出现了数组映射的短语映射,但我正在努力寻找任何示例。

+1

你可以显示其他循环? – Daan

+0

嗨。想一想,可能你不需要在其他循环中立即创建数组。可能存储编号(从你创建数组)到另一个数组中,只是为了索引目的。所以你将拥有MAX索引数组。所以你可以在你真正需要的地方使用它来创建你的简单数组。 – volkinc

回答

1

我不知道它的任何方式更好,但听起来好像这是你得到了什么:

$list = array_map(function($a) { 
    return array('text' => $a, 'value' => $a); 
}, range(1, $number)); 
+0

它可能比当前的例子更不可读 – Joseph

0

你可以试试这个:

$list = array(); 
for($i = 1; $i <= $number ; $i++) { 
      $list[] = array('text'=>$i, 'value'=>$i); 
} 
return $list; 

它会在每次迭代时停止array_push函数调用。