如何将多个关联数组合并为一个?

时间:2017-11-06 08:04:48

标签: php arrays json merge associative

如何将这个assoc数组合并到一个具有数组(标题,描述)的数组? GetContent函数根据我的要求排序数据。

  function getContent($data) {
        $tabs = $data->result->data->tab;    
        $type = findByType($tabs,'content');
            $content = array(); 
            foreach ($type->unified_content->item as $item) { 
                if($item->type->name == 'header') {
                    $content[] = array(
                        'title' => $item->text
                    );   
                } else {
                    $content[] = array(
                        'description' => $item->text
                    );
                }   
            }
            return $content;           
    }

foreach结果的vardump,如何合并标题+描述:

array(1) {
  ["title"]=>
  string(13) "Test článku"
}
array(1) {
  ["description"]=>
  string(20) "Nový článek test."
}
array(1) {
  ["title"]=>
  string(15) "Test článku 2"
}
array(1) {
  ["description"]=>
  string(22) "Nový článek test 2."
}
array(1) {
  ["title"]=>
  string(15) "Test článku 3"
}
array(1) {
  ["description"]=>
  string(22) "Nový článek test 3."
}

4 个答案:

答案 0 :(得分:1)

如果您的内容有严格的订单,您可以使用临时数组存储titledescription这样的内容,

foreach ($type->unified_content->item as $item) { 
    if($item->type->name == 'header') {
        $arr = [];
        $arr['title'] = $item->text;
    } else {
        $arr['description'] = $item->text;
        $content[] = $arr;
    }   
}

如果没有,则需要合并阵列。

答案 1 :(得分:0)

您可以使用array_merge

,例如

foreach ($type->unified_content->item as $item) { 
                if($item->type->name == 'header') {
                    $content = array_merge($content,array(
                        'title' => $item->text
                    ));   
                } else {
                    $content = array_merge($content,array(
                        'description' => $item->text
                    ));
                }   
            }

答案 2 :(得分:0)

您可以将标题描述存储在一个数组中,并将其传递给 $ content 数组。

替换为:

foreach ($type->unified_content->item as $item) { 
    if($item->type->name == 'header') {
        $content[] = array(
            'title' => $item->text
        );   
    } else {
        $content[] = array(
            'description' => $item->text
        );
    }   
}

有了这个:

 $i = 0;
 $content_temp = array();
 foreach ($type->unified_content->item as $item) { 
    if($item->type->name == 'header') {
        $content_temp['title'] = $item->text;   
    } else {
        $content_temp['description'] = $item->text
    }   
    $i++;
    if($i % 2 == 0){
       $content[] = $content_temp;
    }
}

整个代码:

function getContent($data) {
    $tabs = $data->result->data->tab;    
    $type = findByType($tabs,'content');
    $content = array(); 
    $i = 0;
    $content_temp = array();
    foreach ($type->unified_content->item as $item) { 
        if($item->type->name == 'header') {
            $content_temp['title'] = $item->text;   
        } else {
            $content_temp['description'] = $item->text
        }   
        $i++;
        if($i % 2 == 0){
           $content[] = $content_temp;
        }
    }
    return $content;           
}

答案 3 :(得分:0)

array_merge()效率更高,但有几个选项:

$array1 = array("id1" => "value1");

$array2 = array("id2" => "value2", "id3" => "value3", "id4" => "value4");

$array3 = array_merge($array1, $array2/*, $arrayN, $arrayN*/);
$array4 = $array1 + $array2;

echo '<pre>';
var_dump($array3);
var_dump($array4);
echo '</pre>';