无法在php中获取唯一元素
我的问题有点混乱,希望我能解释清楚。我正在从数据库中提取一个数组,结果有点像这样无法在php中获取唯一元素,php,arrays,Php,Arrays,我的问题有点混乱,希望我能解释清楚。我正在从数据库中提取一个数组,结果有点像这样 Array ( [0] => Array ( [subject_id] => 5 [subject_name] => Pakistan Studies [class_title] => Commerce B [class_id] => 1 )
Array
(
[0] => Array
(
[subject_id] => 5
[subject_name] => Pakistan Studies
[class_title] => Commerce B
[class_id] => 1
)
[1] => Array
(
[subject_id] => 12
[subject_name] => Mathematics
[class_title] => Pre-Engineering
[class_id] => 4
)
[2] => Array
(
[subject_id] => 22
[subject_name] => Physics
[class_title] => Pre-Medical A
[class_id] => 6
)
[3] => Array
(
[subject_id] => 16
[subject_name] => Psychology
[class_title] => Humanities
[class_id] => 2
)
[4] => Array
(
[subject_id] => 16
[subject_name] => Psychology
[class_title] => Humanities
[class_id] => 2
)
[5] => Array
(
[subject_id] => 15
[subject_name] => Accounting I
[class_title] => Commerce B
[class_id] => 1
)
[6] => Array
(
[subject_id] => 6
[subject_name] => Computer
[class_title] => Commerce B
[class_id] => 1
)
[7] => Array
(
[subject_id] => 6
[subject_name] => Computer
[class_title] => Pre-Engineering
[class_id] => 4
)
)
我想在这张表格里得到结果
Array(['Commerce'=>'Computer','Accounting','Pakistan Studies'],
['Pre-Engineering' =>'Computer','Mathematics'],
['Humanities' => 'Psycholgy'])
有人能建议什么逻辑可以应用于PHP吗。我真的很感激。
这是屏幕截图
这可以通过一个简单的foreach循环以您想要的格式创建一个新数组来实现
foreach($array as $in){
$new[$in['class_title']][] = $in['subject_name'];
}
您可以使用减速器解决此问题:
$result = array_reduce($yourArray, function($acc, $item){
$acc[$item['class_title']][] = $item['subject_name'];
});
或者使用普通foreach:
$result = [];
foreach( $yourArray as $item ){
$result[$item['class_title']][] = $item['subject_name'];
}
两者都给出了结果:
[
'Commerce' => ['Computer','Accounting','Pakistan Studies'],
'Pre-Engineering' => ['Computer','Mathematics'],
'Humanities' => ['Psycholgy']
]
您好,您期望的结果应该是一个“class_title”数组,其值为“subject_name”数组,如下所示:
$result=[
“商业”=>[“计算机”、“会计”、“巴基斯坦研究”],
“预工程”=>[“计算机”、“数学”],
“人文学科”=>[“心理学”]
];
要达到这个目的,您有两个选择,要么浏览整个输入数组,然后根据“class_title”创建子数组
$result=[];
foreach($课程作为$课程){
$result[$course['class\u title']][=$course['subject\u name'];
}
或者你做完全相同的事情,但使用“array\u reduce”函数
$result=array\u reduce($courses,function($acc,$courses){
$acc[$course['class\u title']][=$course['subject\u name'];
返回$acc;
}, []);
那么您编写了什么代码来尝试实现这一点呢?PS如果您的输入和所需的输出有意义,并且其中包含相同的数据,那么这真的很有用。我正在考虑创建自己的数组,在循环中循环并创建自己的索引。但我不知道怎么做谢谢大家的指导