2013-01-18 58 views
1

我需要一些清晰的PHP函數來實現我想要達到的目標。如何將數組子值添加到父項?

這是一個PHP數組我有:

Array 
(
[0] => Array 
    (
     [id] => 6 
     [index] => 1 
     [active] => 1 
     [name] => MyName 
    ) 

[1] => Array 
    (
     [id] => 1 
     [index] => 2 
     [active] => 1 
     [name] => YourName 
    ) 

[2] => Array 
    (
     [id] => 2 
     [index] => 4 
     [active] => 1 
     [name] => TheirName 
    ) 
} 

我要採取「指數」值,使其更數組父的關鍵,因此該數組將變成這樣:

Array 
(
[1] => Array 
    (
     [id] => 6 
     [index] => 1 
     [active] => 1 
     [name] => MyName 
    ) 

[2] => Array 
    (
     [id] => 1 
     [index] => 2 
     [active] => 1 
     [name] => YourName 
    ) 

[4] => Array 
    (
     [id] => 2 
     [index] => 4 
     [active] => 1 
     [name] => TheirName 
    ) 
} 

任何人都可以請告訴我如何在PHP中做到這一點?

預先感謝您。

+0

謝謝大家3的幫助。我不確定應該將誰作爲正確的答案,所以我選擇了第一張選票。但是,你們一直對此非常有幫助!再次感謝你。 – arrayown

回答

3

不是最完美的解決方案,但它的工作原理(它實際上並沒有移動陣列,它只是生成符合您的要求一個新的):

$resultArr = array(); 
foreach ($mainArr as $value) { 
    $resultArr[$value['index']] = $value; 
} 
unset($mainArr); // or $mainArr = $resultArr; 

這樣你不會覆蓋原始數組中的任何現有密鑰。

1
$a = array 
(
    0 => array 
    (
     "id" => 6, 
     "index" => 1, 
     "active" => 1, 
     "name" => "MyName" 
     ), 

    1 => Array 
    (
     "id" => 1, 
     "index" => 2, 
     "active" => 1, 
     "name" => "YourName" 
     ), 

    2 => Array 
    (
     "id" => 2, 
     "index" => 4, 
     "active" => 1, 
     "name" => "TheirName" 
     ) 
); 

$newArray = array(); 
foreach ($a as $foo) { 
    $newArray[$foo['index']] = $foo; 
} 
1

你必須用手工進行:

$input = array(/* your data */); 
$output = array(); 

foreach ($input as $values) { 
    $output[ $values['index'] ] = $values; 
} 
3

你可以使用:array_column($陣列,NULL, '指數'); 是更好的解決方案,但只適用於> = 5.5 php版本

+0

謝謝,它工作得很好親愛的 – Codebrekers

+0

好的解決方案,只需一行! – user5510975

0
public static function normArray($key, $inputArray) 
{ 
    $outputArray = array(); 
    foreach ($inputArray as $item) { 
     $index = intval($item[$key]); 
     $outputArray[$index] = $item; 
    } 
    return $outputArray; 
} 
相關問題