为了账号安全,请及时绑定邮箱和手机立即绑定

分解数据并构建新数组

分解数据并构建新数组

PHP
肥皂起泡泡 2023-04-21 15:31:30
我需要分解数组的键值并构建一个具有分解结果的新数组。下面的代码适用于一个子数组,我想我缺少一个 for 循环来处理数组值迭代。该解决方案还应处理“金融”子数组数据,以便在新数组中展开并显示。我在后期会有 9 个子数组,因此需要分解数据并将结果移动到新数组中。我的代码<?php$array = [  'company_info' => [    'country_period_0'  => 10,    'currency_period_0' => 20  ],  'finance'      => [    'values_period_0' => 30  ]];$newArray = [];for ($i=0; $i <= 1 ; $i++) {  $array_1     = $array['company_info'];  $arrayKeys   = array_keys($array_1);  $arrayValues = array_values($array_1);  $keySplits   = explode("_", $arrayKeys[$i]);  for ($i=0; $i <= 2 ; $i++) {    $newArray[] = $keySplits[$i];  }    $newArray[3] = $arrayValues[0];}print_r($newArray);结果Array(    [0] => country    [1] => period    [2] => 0    [3] => 10)想要的结果['company_info]Array(    [0] => country    [1] => period    [2] => 0    [3] => 10)Array(    [0] => currency    [1] => period    [2] => 0    [3] => 20)['finance']Array(    [0] => values    [1] => period    [2] => 0    [3] => 30)
查看完整描述

2 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

您可以使用循环大大简化它foreach,尤其是每次获取键和值以帮助构建数组。


这也使用第一级的键explode()将结果添加到using ,但也只是将值添加到数组的末尾 using ... $newArray$newArray[$mainKey][][]


foreach ( $array as $mainKey => $elements )  {

    foreach ( $elements as $subKey => $value ){

        $newData = explode("_", $subKey);

        $newData[] = $value;

        $newArray[$mainKey][] = $newData;

    }

}

用你的测试数据给出......


Array

(

    [company_info] => Array

        (

            [0] => Array

                (

                    [0] => country

                    [1] => period

                    [2] => 0

                    [3] => 10

                )


            [1] => Array

                (

                    [0] => currency

                    [1] => period

                    [2] => 0

                    [3] => 20

                )


        )


    [finance] => Array

        (

            [0] => Array

                (

                    [0] => values

                    [1] => period

                    [2] => 0

                    [3] => 30

                )


        )


)

我只是注意到我丢失了第二个company_info数据,所以这意味着值将始终是数组,除非你真的只在需要时才需要它们是数组。


查看完整回答
反对 回复 2023-04-21
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

$new_array=[];

foreach($array as $category => $tmp ){


  foreach($tmp as $key => $value){

    $exp = explode('_', $key);

    $exp[] = $value;

    $new_array[ $category ][] = $exp;

    }


}


查看完整回答
反对 回复 2023-04-21
  • 2 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信