2016-03-23 67 views
0

如何参加一个阵列是这样的:PHP:如何将关联数组分解为单个数组?

Array 
( 
    [0] => Array 
    ( 
     [id] => 1 
     [BillGroup] => Group A 
    ) 
    [1] => Array 
    ( 
     [id] => 2 
     [BillGroup] => Group B 
    ) 
) 

并动态地把它变成一个这样的数组:

$params = array('1' => 'Group A', '2' => 'Group B') 

其中 '1' 和 '2' 是从[ID]和' [组1]和[组2]来自[BillGroup]。

我需要能够通过$params成笨的form_dropdown()辅助函数的第二个参数提供的下拉选项

+0

有时候解决一个问题是,即使在[用户资料](http://stackoverflow.com/use rs/2844319/abracadaver),*提示,提示*(@abracadaver) – Rizier123

回答

2

您可以使用array_column

$params = array_column ($array , 'BillGroup', 'id'); 

结果:

Array 
(
    [1] => Group A 
    [2] => Group B 
) 

array_combine可用于PHP> = 5.5.0。在以前的版本中,你可以使用array_map

$params = array(); 
array_map 
(
    function ($row) use (&$params) 
    { 
     $params[ $row['id'] ] = $row['BillGroup']; 
    } 
    ,$array 
); 

请注意,我们需要通过引用传递$params由于匿名函数内部变量的作用域。


+0

为什么'array_combine()'?完全不需要。 – Rizier123

+0

@ Rizier123将'id'的值作为关键字 – fusion3k

+0

我认为查看'array_column()'的手册页将是值得的,*提示* – Rizier123

0
<?php 
print "<pre>"; 
echo "Your Array:<br>"; 
    $array=array(

       array('id'=>1 , 'billgroup'=>'Group A'), 
       array('id'=>2 , 'billgroup'=>'Group B'), 
       array('id'=>3 , 'billgroup'=>'Group C') 

     ); 

print_r($array); 


function recursive($array, $level = 1){ 

    global $temp_data; 

    foreach($array as $key => $value){ 
     //If $value is an array. 
     if(is_array($value)){ 
      //We need to loop through it. 
      recursive($value, $level + 1); 
     } else{ 

      //It is not an array, so print it out. 
      $temp_data[] = $value;          
      // echo $key . ": " . $value, '<br>'; 
     } 
    } 

    return $temp_data; 
} 

recursive($array); 
// Converted Array 
echo "Converted Array:<br>"; 

print_r($temp_data); 

$i=0;$j=1;$len = count($temp_data)/2; 

// Converting Normal Array into Associative 
echo "Normal Array to Associative Array:<br>"; 
for($l=1;$l<=$len;$l++){ 

    $output[$temp_data[$i]]= $temp_data[$j]; 
    $i=$i+2; $j=$j+2; 
} 
print_r($output); 

?> 

OUTPUT:

Your Array: 
Array 
(
    [0] => Array 
     (
      [id] => 1 
      [billgroup] => Group A 
     ) 

    [1] => Array 
     (
      [id] => 2 
      [billgroup] => Group B 
     ) 

    [2] => Array 
     (
      [id] => 3 
      [billgroup] => Group C 
     ) 

) 
Converted Array: 
Array 
(
    [0] => 1 
    [1] => Group A 
    [2] => 2 
    [3] => Group B 
    [4] => 3 
    [5] => Group C 
) 
Normal Array to Associative Array: 
Array 
(
    [1] => Group A 
    [2] => Group B 
    [3] => Group C 
) 
+0

这是适用于各种多维阵列...! –