使用unset从php中的数组中删除值
我有一系列的问题作业和一系列的问题。我想通过迭代已分配的问题并从问题数组中删除这些问题的id,从问题数组中删除已分配的问题 这将给我留下一系列未分配的问题 e、 g 分配的问题1,2,3,4,5 问题1,2,3,4,5,6,7,8,9,10 应该离开 问题6,7,8,9,10 所以我的作业数组包含一个调查_questions _id,所以我正在做一个foreach,并在questions数组中取消问题的id,但我没有得到一个数组,其中分配的问题被删除使用unset从php中的数组中删除值,php,Php,我有一系列的问题作业和一系列的问题。我想通过迭代已分配的问题并从问题数组中删除这些问题的id,从问题数组中删除已分配的问题 这将给我留下一系列未分配的问题 e、 g 分配的问题1,2,3,4,5 问题1,2,3,4,5,6,7,8,9,10 应该离开 问题6,7,8,9,10 所以我的作业数组包含一个调查_questions _id,所以我正在做一个foreach,并在questions数组中取消问题的id,但我没有得到一个数组,其中分配的问题被删除 public function re
public function remove_assigned_questions($questions, $survey_id) {
$assignments = $this->db->rs( T_SURVEY_QUESTION_ASSIGNMENTS, NULL, (T_SURVEYS . TC_ID_SUFFIX .'=' . $survey_id) );
foreach($assignments as $assignment) {
unset($questions[$assignment[T_SURVEY_QUESTIONS . TC_ID_SUFFIX]]);
}
return $questions;
}
我的问题数组是这样的
array(3) {
[0]=>
array(5) {
["id"]=>
string(1) "1"
["survey_question"]=>
string(13) "Some question"
["survey_question_types_id"]=>
string(1) "1"
["required"]=>
string(1) "1"
["status"]=>
string(1) "1"
}
[1]=>
array(5) {
["id"]=>
string(1) "2"
["survey_question"]=>
string(17) "One more question"
["survey_question_types_id"]=>
string(1) "2"
["required"]=>
string(1) "1"
["status"]=>
string(1) "1"
}
[2]=>
array(5) {
["id"]=>
string(1) "3"
["survey_question"]=>
string(21) "Just another question"
["survey_question_types_id"]=>
string(1) "1"
["required"]=>
string(1) "1"
["status"]=>
string(1) "1"
}
}
你知道为什么它不删除作业中的问题吗[t\u SURVEY\u questions.TC\u ID\u后缀]
下面是作业的值,然后是作业的foreach循环值[T\u SURVEY\u QUESTIONS.TC\u ID\u SUFFIX]
array(2) {
[0]=>
array(3) {
["id"]=>
string(1) "1"
["surveys_id"]=>
string(1) "3"
["survey_questions_id"]=>
string(1) "1"
}
[1]=>
array(3) {
["id"]=>
string(1) "2"
["surveys_id"]=>
string(1) "3"
["survey_questions_id"]=>
string(1) "2"
}
}
string(1) "1"
string(1) "2"
当程序运行时,它似乎删除了ID为2和3的问题,而留给我的是1
array(1) {
[0]=>
array(5) {
["id"]=>
string(1) "1"
["survey_question"]=>
string(13) "Some question"
["survey_question_types_id"]=>
string(1) "1"
["required"]=>
string(1) "1"
["status"]=>
string(1) "1"
}
}
这是不正确的,因为分配了1我之所以使用它,是因为@deceze指出了我的错误,我需要在带有分配的问题id值的问题中找到问题数组的键,然后删除该数组键
public function remove_assigned_questions($questions, $survey_id) {
$assignments = $this->db->rs( T_SURVEY_QUESTION_ASSIGNMENTS, NULL, (T_SURVEYS . TC_ID_SUFFIX . '=' . $survey_id) );
$ids = array_column($questions, TC_ID);
foreach($assignments as $assignment) {
if( $key = array_search( $assignment[T_SURVEY_QUESTIONS . TC_ID_SUFFIX], $ids ) );
unset($questions[$key]);
}
return $questions;
}
分类 我们需要$assignments、T_SURVEY_QUESTIONS和TC_ID_SUFFIX的值才能说出任何事情…只是添加了一些您正在测试remove_assignment_QUESTIONS的返回值的值,或者您希望$questions输入参数被修改到位吗?我希望$questions将通过删除分配的问题返回,并删除分配的问题的id。您知道您正在取消数组偏移,而不是通过id取消问题?!