Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是否有一种将关联数组转换为数字数组的最小方法,每个项目都存储键和值?_Php_Associative Array - Fatal编程技术网

Php 是否有一种将关联数组转换为数字数组的最小方法,每个项目都存储键和值?

Php 是否有一种将关联数组转换为数字数组的最小方法,每个项目都存储键和值?,php,associative-array,Php,Associative Array,我只需要在PHP中转换: [ 'id' => '1', 'code' => 'DRX', 'company_name' => 'Dave Ricks Ltd' ], [ 'id' => '2', 'code' => 'LRT', 'company_name' => 'LiveRave Ltd' ] 到 我知道我可以用几个foreach循环来实现这一点,但我想知道使用一些PHPs数组函数是否可以用更少的代码行来

我只需要在PHP中转换:

[
    'id' => '1',
    'code' => 'DRX',
    'company_name' => 'Dave Ricks Ltd'
], 
[
    'id' => '2',
    'code' => 'LRT',
    'company_name' => 'LiveRave Ltd'
]


我知道我可以用几个foreach循环来实现这一点,但我想知道使用一些PHPs数组函数是否可以用更少的代码行来实现这一点?

我假设您的初始数组实际上是

[
  [
    'id' => '1', 'code' => 'DRX', 'company_name' => 'Dave Ricks Ltd'
  ],
  [
    'id' => '2', 'code' => 'LRT', 'company_name' => 'LiveRave Ltd'
  ]
]
因为这是你从数据库里得到的东西。如果我错了,并且您发布了数组的实际var\u dump/print\r,这很奇怪,但是我们可以添加一个步骤来重新组织它

所以我们需要做的就是

$input = [
    [
        'id' => '1',
        'code' => 'DRX',
        'company_name' => 'Dave Ricks Ltd',
    ], 
    [
        'id' => '2',
        'code' => 'LRT',
        'company_name' => 'LiveRave Ltd',
    ]
];

$output = array_map(function($elem) { 

    return [
        ['name' => 'id', 'value' => $elem['id'] ],
        ['name' => 'code', 'value' => $elem['code'] ],
        ['name' => 'company_name', 'value' => $elem['company_name'] ],
    ];

}, $input);
print_r($output);
如果希望转换更通用,请执行以下操作:

$output = array_map(function($elem) { 

    $result = [];
    foreach ($elem as $key => $value) {
        $result[] = ['name' => $key, 'value' => $value];
    }
    return $result;

}, $input);
print_r($output);
我正在考虑是否有一种方法可以移除内部foreach,但我认为没有一种方法值得这么做。

您可以尝试以下方法:

while ($array) {
    $item = array_shift($array);

    $new_entry = array();

    foreach ($item as $key => $value) {
        $new_item['name'] = $key;
        $new_item['value'] = $value;

        $new_entry[] = $new_item;
    }

    $new_array[] = $new_entry;
}

$final_array = array($new_array);

print_r($final_array);
印刷品:

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => Array
                        (
                            [name] => id
                            [value] => 1
                        )

                    [1] => Array
                        (
                            [name] => code
                            [value] => DRX
                        )

                    [2] => Array
                        (
                            [name] => company_name
                            [value] => Dave Ricks Ltd
                        )

                )

            [1] => Array
                (
                    [0] => Array
                        (
                            [name] => id
                            [value] => 2
                        )

                    [1] => Array
                        (
                            [name] => code
                            [value] => LRT
                        )

                    [2] => Array
                        (
                            [name] => company_name
                            [value] => LiveRave Ltd
                        )

                )

        )

)

array\u walk使用array\u与array\u键和array\u值结合使用回调可能会起作用为什么不使用JSON呢?然后可以使用json_编码和json_解码
Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => Array
                        (
                            [name] => id
                            [value] => 1
                        )

                    [1] => Array
                        (
                            [name] => code
                            [value] => DRX
                        )

                    [2] => Array
                        (
                            [name] => company_name
                            [value] => Dave Ricks Ltd
                        )

                )

            [1] => Array
                (
                    [0] => Array
                        (
                            [name] => id
                            [value] => 2
                        )

                    [1] => Array
                        (
                            [name] => code
                            [value] => LRT
                        )

                    [2] => Array
                        (
                            [name] => company_name
                            [value] => LiveRave Ltd
                        )

                )

        )

)