douaoli5328 2014-12-10 05:22
浏览 27

组合2个数组,其中值成为关键

I have 2 arrays ($arr1 and $arr2) I needed to combine such that the values from the first array becomes the key after the second array has been merged.

Basically $arr1 is a result of array_combine() I have used. I wanted to implement the same action to the 3rd array however, i cannot get the result I wanted.

$arr1

Array(

    [fb1] => Array
             (
                  [0] => "test1"
             )
    [fb2] => Array
             (
                  [0] => "test2"
             )  
)

$arr2[][][]

Array(

    [0] => Array
             (
                 [0] => Array 
                        (

                          [0] => "A"
                          [1] => "B"
                        )
             )
    [1] => Array
             (
                 [0] => Array
                        (
                          [0] => "C"
                          [1] => "D"
                        )
             )  
)

This is the result I'm looking for:

Array(

    [fb1] => Array
             (
                 [test1] => Array 
                        (

                          [0] => "A"
                          [1] => "B"
                        )
             )
    [fb2] => Array
             (
                 [test2] => Array
                        (
                          [0] => "C"
                          [1] => "D"
                        )
             )  
)

This is the code I mainly used:

                    $objReader = PHPExcel_IOFactory::createReader('Excel5');
                    $objReader->setReadDataOnly(true);
                    $objPHPExcel = $objReader->load($filer);

                    $objWorksheet = $objPHPExcel->setActiveSheetIndex(1);
                    $objWorksheet1 = $objPHPExcel->setActiveSheetIndex(3);
                    $objWorksheet2 = $objPHPExcel->setActiveSheetIndex(4);

                    echo "<table cellpadding='0' cellspacing='0' border='0' width='100%' id='tblMain' style='color: #FFFFFF;'>" . "
";
                    echo '<tr>';


                    /*************************************************/
                    // sheet 0 floor
                    $array_test = array();

                        foreach ($objWorksheet->getRowIterator() as $row) 
                        {


                                $rowIndex = $row->getRowIndex();
                                $cell = $objWorksheet->getCell("A". $rowIndex);
                                $array_test[] = $cell->getCalculatedValue(); 

                        }

                    //print '<pre>'.print_r($array_test,true).'<pre>';
                    /*************************************************/
                    // sheet1


                        foreach ($objWorksheet->getRowIterator() as $row) 
                        {
                            PHPExcel_Calculation::getInstance($objWorksheet->getParent())->clearCalculationCache(); 

                            $rowIndex = $row->getRowIndex();
                            $cell = $objWorksheet->getCell("B". $rowIndex);

                            $array_units[][] = $cell->getCalculatedValue();

                        }

                $array_c = $this->combine_arr($array_test, $array_units);

                    // /*************************************************/
                    //sheet 2


                        foreach ($objWorksheet1->getRowIterator() as $row) 
                        {

                                $rowIndex = $row->getRowIndex();
                                $cell = $objWorksheet->getCell("B". $rowIndex);
                                if($cell->getCalculatedValue() == ""){

                                    $artest[][][] =  "NONE";
                                }
                                else{
                                    $artest[][][] =  $cell->getCalculatedValue();

                                }

                        }


                    // var_dump($array_co);
                    //$slice = array_slice($artest, 0, 35);

                    // echo count($array_c)."<br/>";
                    // echo count($slice);
                    //$array_co = array_merge_recursive(, $slice);

                    // print '<pre>'.print_r($array_c, true).'<pre>';                       
                    // print '<pre>'.print_r($artest, true).'<pre>';


                        $merged = array_merge_recursive($array_c, $artest);
                        print '<pre>'.print_r($array_c, true).'<pre>';
                        echo "<br/>";
                        print '<pre>'.print_r($artest, true).'<pre>';
                        echo "<br/>";
                        print '<pre>'.print_r($merged, true).'<pre>';
  • 写回答

1条回答 默认 最新

  • douxiuyu2028 2014-12-10 08:25
    关注
    $newArr = array(); foreach($arr2 as $tk => $tv){
        foreach($arr1 as $lk => $lv){
            $newArr[$lk][$lv[0]] = $tv[0];
        }
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染