Php 随机化对象数组的一部分
我有一个对象数组。首先我洗牌它。我想根据两个键对数组排序Php 随机化对象数组的一部分,php,sorting,random,Php,Sorting,Random,我有一个对象数组。首先我洗牌它。我想根据两个键对数组排序 "questions": [ { "id_question": "35", "id_subject": "63", "id_question_pattern": "1", "correct_marks": "1", "in_correct_marks": "0", "partial_marks": "0", "id_question_interpr
"questions": [
{
"id_question": "35",
"id_subject": "63",
"id_question_pattern": "1",
"correct_marks": "1",
"in_correct_marks": "0",
"partial_marks": "0",
"id_question_interpretation": "1",
"id_comprehension": "0",
"is_approved": "13",
"question_image": "",
"solution_image": "",
"subject_name": "subject 1",
"id_sub_subject": "112",
"sub_subject_name": "Sub Subject 2",
"id_topic": "212",
"topic_name": "Sub subject 2 topic 1",
"id_sub_topic": "31",
"sub_topic_name": "subject 1 sub topic 2 Q3",
"id_question_source": "3",
"question_source_name": "Dakshana intimal\t",
"id_difficult_level": "4",
"difficulty_name": "Difficult",
"quesion_pattern_name": "Single Correct Option Type ",
"id_status": "0",
"status_name": "Active",
"last_review_date": "2018-10-31 11:05:14",
"id_review_requirement": "2",
"id_time_for_question": "2",
"answer": "",
"is_answered": "1",
"is_visited": "1",
"mark_for_review": "1",
"is_not_answered": "1",
"id_selected_option": "",
"single_correct_option": "",
"number_of_visted": "0",
"spend_time": "0",
"multiple_correct_option": "",
"matxi_answer": "",
"id_subject_section": "",
"sequence_number": 1
},
{
"id_question": "11",
"id_subject": "6",
"id_question_pattern": "1",
"correct_marks": "2",
"in_correct_marks": "1",
"partial_marks": "0",
"id_question_interpretation": "1",
"id_comprehension": "0",
"is_approved": "13",
"question_image": "",
"solution_image": "",
"subject_name": "Mathematics",
"id_sub_subject": "5",
"sub_subject_name": "Algebra",
"id_topic": "31",
"topic_name": "Mathematical Induction",
"id_sub_topic": "44",
"sub_topic_name": "Mathematical induction 1",
"id_question_source": "3",
"question_source_name": "Dakshana intimal\t",
"id_difficult_level": "3",
"difficulty_name": "Medium",
"quesion_pattern_name": "Single Correct Option Type ",
"id_status": "0",
"status_name": "Active",
"last_review_date": "2018-10-24 16:20:13",
"id_review_requirement": "1",
"id_time_for_question": "3",
"answer": "",
"is_answered": "1",
"is_visited": "1",
"mark_for_review": "1",
"is_not_answered": "1",
"id_selected_option": "",
"single_correct_option": "",
"number_of_visted": "0",
"spend_time": "0",
"multiple_correct_option": "",
"matxi_answer": "",
"id_subject_section": "",
"sequence_number": 2
},
{
"id_question": "25",
"id_subject": "4",
"id_question_pattern": "1",
"correct_marks": "2",
"in_correct_marks": "0",
"partial_marks": "0",
"id_question_interpretation": "2",
"id_comprehension": "0",
"is_approved": "13",
"question_image": "",
"solution_image": "",
"subject_name": "Chemistry",
"id_sub_subject": "1",
"sub_subject_name": "Optics",
"id_topic": "1",
"topic_name": "Thermo dynamics",
"id_sub_topic": "46",
"sub_topic_name": "sub topic thermodyn chemistry",
"id_question_source": "3",
"question_source_name": "Dakshana intimal\t",
"id_difficult_level": "1",
"difficulty_name": "Very Easy",
"quesion_pattern_name": "Single Correct Option Type ",
"id_status": "0",
"status_name": "Active",
"last_review_date": "2018-10-26 12:05:28",
"id_review_requirement": "1",
"id_time_for_question": "1",
"answer": "",
"is_answered": "1",
"is_visited": "1",
"mark_for_review": "1",
"is_not_answered": "1",
"id_selected_option": "",
"single_correct_option": "",
"number_of_visted": "0",
"spend_time": "0",
"multiple_correct_option": "",
"matxi_answer": "",
"id_subject_section": "",
"sequence_number": 3
},
{
"id_question": "6",
"id_subject": "4",
"id_question_pattern": "1",
"correct_marks": "2",
"in_correct_marks": "0",
"partial_marks": "0",
"id_question_interpretation": "2",
"id_comprehension": "0",
"is_approved": "13",
"question_image": "",
"solution_image": "",
"subject_name": "Chemistry",
"id_sub_subject": "1",
"sub_subject_name": "Optics",
"id_topic": "1",
"topic_name": "Thermo dynamics",
"id_sub_topic": "46",
"sub_topic_name": "sub topic thermodyn chemistry",
"id_question_source": "3",
"question_source_name": "Dakshana intimal\t",
"id_difficult_level": "2",
"difficulty_name": "Easy",
"quesion_pattern_name": "Single Correct Option Type ",
"id_status": "0",
"status_name": "Active",
"last_review_date": "2018-10-24 16:15:48",
"id_review_requirement": "1",
"id_time_for_question": "2",
"answer": "",
"is_answered": "1",
"is_visited": "1",
"mark_for_review": "1",
"is_not_answered": "1",
"id_selected_option": "",
"single_correct_option": "",
"number_of_visted": "0",
"spend_time": "0",
"multiple_correct_option": "",
"matxi_answer": "",
"id_subject_section": "",
"sequence_number": 4
}
]
每次我都想用主题中的更改id\u问题
foreach ($questions_array as $key => $row){
$subject_sort[$key] = $row['id_subject'];
$question_pattern_sort[$key] = $row['id_question_pattern'];
}
array_multisort($question_pattern_sort, SORT_ASC, $subject_sort, SORT_ASC, $questions_array);
如果我正确理解了您的问题,您可以做的是循环遍历数组,并为数组的每个元素设置id\u question=id\u subject
像这样:
foreach($questions_array['questions'] as $key=>$value){
$questions_array['questions'][$key]['id_question'] = $questions_array['questions'][$key]['id_subject'];
}
要按id\u subject
排序,然后按id\u question\u pattern
排序,我可以推荐两种方法之一(取决于您的php版本)
带有usort()
:()
注意要意识到您想要在问题子数组中排序。foreach($questions\u array as$key=>$row){$subject\u sort[$key]=$row['id\u subject'];$question\u pattern\u sort[$key]=$row['id\u question\u pattern']}数组\u多重排序($question\u pattern\u sort,sort\u ASC,$subject\u sort,sort\u ASC,$questions\u array);我这样做,但每次都会给我相同的id_问题。请使用当前代码更新您的问题。注释区域不适用于代码块。请尽量减少您的问题,使其仅包含相关样本数据。您的问题在每个子数组中的识别元素和两个随机元素将同样清晰。Li在每个子数组中插入数十个元素纯粹是页面膨胀,使您的问题不太容易回答。然后,您应该包含所需的后期排序输出,以便清楚地了解当前代码的工作方式以及您希望实现的目标。
usort($array["questions"],
function($a, $b){
return [$a['id_subject'], $a['id_question_pattern']] <=> [$b['id_subject'], $b['id_question_pattern']];
}
);
array_multisort(array_column($array["questions"], "id_subject"), SORT_ASC, array_column($array["questions"], "id_question_pattern"), SORT_ASC, $array["questions"]);