将具有相同值的数组组合为键-PHP [英] Combine arrays with same value for a key - PHP
本文介绍了将具有相同值的数组组合为键-PHP的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个多维数组
Array(
[0] => Array
(
[category_id] => 1
[question_id] => 1
[option_id] => 2
[title] => Do you wear glasses?
[answer] => no
)
[1] => Array
(
[category_id] => 1
[question_id] => 2
[option_id] => 3
[title] => Your hobbies ?
[answer] => movies
)
[2] => Array
(
[category_id] => 1
[question_id] => 4
[option_id] => 8
[title] => what is your status?
[answer] => single
)
[3] => Array
(
[category_id] => 1
[question_id] => 2
[option_id] => 1
[title] => Your hobbies ?
[answer] => travel
)
)
其中第二和第四数组包含相同的问题(相同的类别ID和相同的问题ID)
组合具有相同类别ID和问题ID的数组。
In which 2nd and 4th array contains same question (same category id and same question id) I want to combine arrays having same category id and question id.
我期望的是这
Array(
[0] => Array
(
[category_id] => 1
[question_id] => 1
[option_id] => 2
[title] => Do you wear glasses?
[answer] => no
)
[1] => Array
(
[category_id] => 1
[question_id] => 2
[option_id] => 3
[title] => Your hobbies ?
[answer] => movies,travel
)
[2] => Array
(
[category_id] => 1
[question_id] => 4
[option_id] => 8
[title] => what is your status?
[answer] => single
)
)
表示仅合并其答案。请帮助...
Means combine its answers only. Please help ...
推荐答案
foreach($arr as $k=>$a)
{
$common[$k] = search($arr,'category_id',$a['category_id'],'question_id',$a['question_id']);
$answers = array_map(function($item) { return $item['answer']; }, $common[$k]);
$options = array_map(function($item) { return $item['option_id']; }, $common[$k]);
foreach($common[$k] as $temp)
{
$finalAns = $temp;
$finalAns['answer'] = implode(",",$answers);
$finalAns['option_id'] = implode(",",$options);
}
$final[] = $finalAns;
}
$final = array_map("unserialize", array_unique(array_map("serialize", $final)));
echo "<pre>";
print_r($final);
在公共功能文件或同一文件中放置以下功能。
Put Below function in your common function file or in same file.
function search($array, $key, $value, $key1, $value1)
{
$results = array();
if (is_array($array))
{
if (isset($array[$key]) && $array[$key] == $value && isset($array[$key1]) && $array[$key1] == $value1)
{
$results[] = $array;
}
foreach ($array as $subarray)
$results = array_merge($results, search($subarray, $key, $value,$key1,$value1));
}
return $results;
}
您的输出将是
数组
(
[0] =>数组
(
[category_id] => 1
[question_id] => 1
[option_id ] => 2
[title] =>您戴眼镜吗?
[answer] =>否
)
Array ( [0] => Array ( [category_id] => 1 [question_id] => 1 [option_id] => 2 [title] => Do you wear glasses? [answer] => no )
[1] => Array
(
[category_id] => 1
[question_id] => 2
[option_id] => 3,1
[title] => Your hobbies ?
[answer] => movies,travel
)
[2] => Array
(
[category_id] => 1
[question_id] => 4
[option_id] => 8
[title] => what is your status?
[answer] => single
)
)
这篇关于将具有相同值的数组组合为键-PHP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文