如何将这个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."
}
答案 0 :(得分:1)
如果您的内容有严格的订单,您可以使用临时数组存储title
和description
这样的内容,
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>';