PHP:如何将关联数组分解为单个数组


PHP: How to break an associative array into a single array?

如何获取这样的数组:

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

并动态地将其转换为这样的阵列:

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

其中"1"answers"2"来自[id],"Group 1"和《Group 2》来自[BillGroup]。

我需要能够将$params作为第二个参数传递到Codeigniter的form_dropdown()辅助函数中,以提供下拉选项

您可以使用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


  • 查看有关array_column()的详细信息
  • 查看有关array_map()的更多信息
<?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);
?>

输出:

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
)