如何将数组键复制到另一个数组,并用空数组替换值?

时间:2015-06-11 12:27:20

标签: php arrays

我有一个数组,f。 E:

$arr = array(
    4 => 'some value 1',
    7 => 'some value 2',
    9 => 'some value 3',
    12 => 'some value 4',
    13 => 'some value 5',
    27 => 'some value 6',
    41 => 'some value 7'
)

我需要创建另一个数组,其中值将是数组,但键将是相同的;像这样:

$arr = array(
    4 => array(),
    7 => array(),
    9 => array(),
    12 => array(),
    13 => array(),
    27 => array(),
    41 => array()
)

PHP中是否有一些内置函数可以做到这一点? array_keys()没有帮助我:

var_dump(array_keys($arr));

返回:

array(7) {
  [0]=>
  int(0)
  [1]=>
  int(1)
  [2]=>
  int(2)
  [3]=>
  int(3)
  [4]=>
  int(4)
  [5]=>
  int(5)
  [6]=>
  int(6)
}

4 个答案:

答案 0 :(得分:5)

试试这个。您可以使用 array_fill_keys()获取更多信息follow this link

$arr = array(
    4 => 'some value 1',
    7 => 'some value 2',
    9 => 'some value 3',
    12 => 'some value 4',
    13 => 'some value 5',
    27 => 'some value 6',
    41 => 'some value 7'
);
$keys=array_keys($arr);

$filledArray=array_fill_keys($keys,array());
print_r($filledArray);

答案 1 :(得分:3)

这应该适合你:

只需array_combine()来自旧数组的array_keys(),其中array_fill()'ed数组中包含空数组。

<?php

    $newArray = array_combine(array_keys($arr), array_fill(0, count($arr), []));
    print_r($newArray);

?>

输出:

Array
(
    [4] => Array ()  
    [7] => Array ()    
    [9] => Array ()    
    [12] => Array ()    
    [13] => Array ()    
    [27] => Array ()
    [41] => Array ()

)

答案 2 :(得分:1)

将值更改为数组保存键:

$arr2 = array_map(function ($i){
    return array();
}, $arr);

结果

Array
(
    [4] => Array ( )  
    [7] => Array ( )    
    [9] => Array ( )    
    [12] => Array ( )    
    [13] => Array ( )    
    [27] => Array ( )
    [41] => Array ( )

)

答案 3 :(得分:0)

试试这个:

foreach($arr as $key => $value) {
  $array[$key] = array('a','b','c');
}