2015-06-11 29 views
3

我有一個數組f。 È:如何將數組鍵複製到另一個數組,並用空數組替換值?

$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) 
} 
+0

* array_keys()並沒有幫助我。* < - 顯示你的代碼和你卡在哪裏 – Rizier123

+1

順便說一句,我的解答比這個更快,我認爲,因爲更少的函數調用:) https://eval.in/379770 – splash58

+0

是的,這是可能的。 – Legionar

回答

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); 
+0

謝謝。就是這個。 – Legionar

3

這應該爲你工作:

只是array_combine()array_keys()從舊的陣列,與array_fill()「編陣滿空陣列。

<?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() 

) 
+0

它足以使用'array_fill_keys(array_keys($ arr),array());',但是,這也是另一個更長的解決方案...... – Legionar

+0

@Legionar是的,我只是以某種方式在我的腦海中有這個解決方案。 – Rizier123

+0

,這是更慢的40%:)))) – splash58

0

試試這個:

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

改變數值數組保存鍵:

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

結果

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

) 
+0

爲什麼會倒下投票? – splash58

+0

@ Rizier123謝謝 – splash58

+0

謝謝。它足以使用'array_fill_keys(array_keys($ arr),array());',但是,這也是另一種解決方案...... – Legionar

相關問題