Объедините 2 массива, где значение становится ключом

0

У меня есть 2 массива ($ arr1 и $ arr2), которые мне нужно совместить, чтобы значения из первого массива становились ключом после объединения второго массива.

В основном $ arr1 является результатом array_combine(), который я использовал. Однако я хотел реализовать одно и то же действие для третьего массива, но я не могу получить результат, который мне нужен.

$ 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"
                        )
             )  
)

Это результат, который я ищу:

Array(

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

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

Это код, который я использовал главным образом:

                    $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;'>" . "\n";
                    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>';
  • 0
    Я начал публиковать ответ, но понял, что ваш вопрос недостаточно ясен. Вы хотите сопоставить значения из $ arr2 в той же позиции (xth child of nth child), или вы имели в виду какой-то другой алгоритм?
  • 0
    это то, что меня удивляет, как вы сопоставляете значения $ arr2, потому что вы собираетесь заменить ключ значением на втором узле.
Теги:
arrays
multidimensional-array
phpexcel

1 ответ

0
$newArr = array(); foreach($arr2 as $tk => $tv){
    foreach($arr1 as $lk => $lv){
        $newArr[$lk][$lv[0]] = $tv[0];
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню