Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在php中获取唯一元素_Php_Arrays - Fatal编程技术网

无法在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如果您的输入和所需的输出有意义,并且其中包含相同的数据,那么这真的很有用。我正在考虑创建自己的数组,在循环中循环并创建自己的索引。但我不知道怎么做谢谢大家的指导