我想使用数组函数来转换数组


I want to use array function to convert array

我有如下数组。我想转换这个数组,但我想使用数组函数。在数组下面有任何数组函数可以转换吗

[name] => Array
            (
                [0] => Cash Crops
                [7] => Cereal Crops
                [12] => Vegetables
                [25] => Leafy Vegetables
                [28] => Vine Vegetables
            )

进入这个阵列

        [0] => Array
            (
                [name] => Cash crops
            )
        [1] => Array
            (
                [name] => Pulse crops
            )
        [2] => Array
            (
                [name] => Oil seed crops
            )
        [3] => Array
            (
                [name] => Cereal Crops
            )

使用应用于内部name阵列的array_walk

$a = array(
    'name' => array(
        'Cash Crops','Cereal Crops','Vegetables','Leafy Vegetables','Vine Vegetables'
    )
);
$result = array();
array_walk($a['name'],
    function($value,$index) use (&$result){
        $result[] = array(
            'name' => $value
        );
});
print_r($result);

将输出

Array
(
    [0] => Array
        (
            [name] => Cash Crops
        )
    [1] => Array
        (
            [name] => Cereal Crops
        )
    [2] => Array
        (
            [name] => Vegetables
        )
    [3] => Array
        (
            [name] => Leafy Vegetables
        )
    [4] => Array
        (
            [name] => Vine Vegetables
        )
)

使用本机php函数实现这一点的最佳方法是使用array_map()

<?php
function twod($n)
{
    $res = array('name' => $n);
    return($res);
}
$a['name'] = array(1, 2, 3, 4, 5);
$new_array = array_map("twod", $a['name']);
print_r($new_array);
?>

请确保让社区知道你为什么想要某种特定的方式,而不仅仅是说"我可以写逻辑来转换它,但我想要数组函数"

$oldarray = array()//your array with old data;
$newarray = convertArray($oldarray);
function convertArray($old){
    $new = array();
    foreach($old as $index=>$value)
    {
        $new[]['name'] = $value;
    }
    return $new;
}

这会将其转换为您的数组。

此oneliner适用于任何"名称":

$tal = array_map(function($x) use($array)  {return array( array_keys($array)[0] => $x);}, $array[array_keys($array)[0]]);