2016-07-23 97 views
2

我可以这样写出来。创建子阵列时通过分配键创建阵列阵列

$key = "sid"; 
$values = array(1,2,3); 
$desired_array = array(); 

foreach($values as $value){ 
    $desired_array[] = array($key => $value); 
} 

print_r($desired_array); 

输出结果如下所示。

Array 
(
    [0] => Array 
     (
      [sid] => 1 
     ) 

    [1] => Array 
     (
      [sid] => 2 
     ) 

    [2] => Array 
     (
      [sid] => 3 
     )  
) 

我希望有一个奇特的PHP的阵列功能,我不知道,可以创建一个对我这么让我的代码更简洁。

下面是已完成的解决方案,可能不会更短,但我总是很开心,当我使用array_map。

$key = "sid"; 
$values = array(1,2,3); 
$desired_array = array_map(function($value) use($key){ 
    return array($key=>$value); 
},$values); 

回答

2

使用array_map功能的替代解决方案:

$desired_array = array_map(function($v) use($key){ return [$key => $v]; }, $values); 
+0

使用($ key)正是我需要的,使array_map以我需要的方式工作。谢谢! – jbrahy

+0

@ jbrahy,不客气 – RomanPerekhrest

2

你可能会寻找array_map

它的工作是这样的:

$array = [1, 2, 3]; 
$desired = array_map(function ($item) {return ['sid' => $item];}, $array); 

我相信这link应该示范工作为好。

+0

谢谢,但是当我最初尝试使用array_map时,我错过了use()。这是RomanPerekhrest的回答。 – jbrahy

+0

是的,如果你想要一个可变的键,他是更好的答案。 – ToothlessRebel