2014-12-10 2 views
0

2 개의 배열 ($ arr1과 $ arr2)이 있습니다. 두 번째 배열이 병합 된 후 첫 번째 배열의 값이 키가되도록 결합해야했습니다.값이 키가되는 곳에 두 개의 배열을 결합하십시오.

기본적으로 $ arr1은 내가 사용한 array_combine()의 결과입니다. 그러나 제 3의 배열에 동일한 액션을 구현하고 싶었지만, 원하는 결과를 얻을 수 없었습니다.

Array(

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

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

이 코드 I입니다 :

$는

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

이것은 내가 찾고 결과입니다 arr1 주로 사용 :

    $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의 값을 같은 * 위치 * (n 번째 자식의 x 번째 자식)와 일치 시키길 원하나요, 아니면 마음에두고 있었던 다른 알고리즘이 있습니까? – RobP

+0

그것은 내가 두 번째 노드의 값으로 키를 대체하려고하기 때문에 $ arr2의 값과 어떻게 일치합니까? – mmr

답변

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