将两个阵列组合成单个2D阵列 - PHP

时间:2015-06-08 04:41:03

标签: php arrays multidimensional-array

print_r($size);

Array
(
    [0] => 2
)
Array
(
    [0] => 2
    [1] => 1
)
Array
(
    [0] => 2
    [1] => 1
    [2] => 5
)

print_r($tag1);

Array
(
    [0] => ew-language
)
Array
(
    [0] => ew-language
    [1] => global
)
Array
(
    [0] => ew-language
    [1] => global
    [2] => phrase
)

如何在单个二维数组中组合这两个数组。跨索引0我可以获得size[1]tag1[1] 2ew-language。我将这两个数组组合起来用于稍后在for循环中的代码中,可以比较Sizes并根据大小比较条件打印标记。

预期产出

$array[$size][$tag1]=Array(

 [0] =>[2] [ew-language]
 [1] =>[1] [global]
 [2] =>[5] [phrase]
    )

对不起,如果我错了,我不知道这是否是2D阵列。 现在的代码

<?php
    if(isset($_POST['submit'])){

unset($_POST['submit']);
 function printxml ($array)
 {
                $xml = new DOMDocument('1.0','UTF-8');
              //  $xpath = new DOMXPath($xml);
                $xml->formatOutput = true;
                $last_index_ids = array();
                $i_id=0;
                $parentid = array();
                $x=0;
                $tag1=array();//contains all tags
                $tag=array();
                $t=0;
                $size=array();//contains size of all arrays 

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

                    $key = $key;
//contains all the values of respective ids                    
                    $attrvalue= $value;

  if ($array[$key] == "" || ctype_space($array[$key]) ) {
                        $array[$key] = null;
    }

//split unique input field names
                     $expkey = explode("__", $key);
                    $array_size=sizeof($expkey);
                    array_push($size, $array_size);       
                  //echo"<pre>";  print_r($expkey); echo"</pre>";


$result = array();
foreach ($size as $i => $val) {
    $result[] = array($val, $tag1[$i]);
}
echo "<pre>";
print_r($result);



    if ($array_size == 1){

         array_push($tag1 ,($expkey[0]));

                    }

       else {

                 array_push($tag1 ,($expkey[$array_size-2]));

              }

                     $calculated =   $array_size;
                     $present_element = $element_tag;

               if(isset($check)) {
                    if(($calculated < $check) || ($calculated == $check))
                    { 
                  // echo $calculated.' is less than '.$check;echo "<br/>";

                      if ($array_size == 1){
                        $first_tag->appendChild($element_tag);
                      }

                      else{ //logic to be implemented

                      }

                      }

                    else 
                    {
                      if ($array_size>1){
                        $previous_element->appendChild($present_element);

                      }

                        else{ echo"condition not valid"; }
                      //  echo $calculated.' is more than '.$check;echo "<br/>";

                        }

               }

            else 

            {
             // echo "first";


            }


            $check      =   $array_size;
            $previous_element = $element_tag;

echo"<pre>"; print_r($size); echo"</pre>";
echo"<pre>"; print_r($tag1); echo"</pre>";

$xml->save("file.xml");
}
}
printxml($_POST);

}
?>

3 个答案:

答案 0 :(得分:1)

请尝试以下:

<?php

$size = Array ( 2 ,1);
$tag1 = Array ( 'ew-language','global' );

$result = array();
foreach ($size as $i => $val) {
    $result[] = array($val, $tag1[$i]);
}
echo "<pre>";
print_r($result);
?>

答案 1 :(得分:1)

在进一步实际编码之前,您可能需要进一步阅读有关数组的内容。从长远来看,实现一些你甚至不熟悉的东西将花费你更多的时间,这是大多数程序员的常见陷阱。你需要首先了解所有选项,你需要技术上熟练,所以阅读......

资源

在完成所有阅读之后,您将决定实施过程中真正需要的结构。

干杯。

答案 2 :(得分:1)

您可以尝试使用array_map作为

$size = Array (2,1);
$tag1 = Array ('ew-language','global');
$result = array_map(function($a,$b){ return array($a,$b);}, $size,$tag1);

或者只是你可以把它写成

$result = array_map(null, $size,$tag1);

DEMO DEMO 2