Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/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_Sorting_Random - Fatal编程技术网

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"]);