我尝试在材料拣选页面中进行改进,之前显示的每个项目都没有检查重复数量,因此有时项目会多次出现,而不仅仅是更改数量。
我认为最好重新编写代码来填充多维数组,并每次检查数组是否有重复。
以下是代码:
$get_materials = MySqlDb::query("SELECT * FROM material_item WHERE link_id = '$ids'");
while($row = mysqli_fetch_array($get_materials)) {
if($row['option_1_answers'] == '' && $row['option_2_answers'] == '' && $row['option_3_answers'] == '' && $row['option_4_answers'] == '') {
// vvvvvvvvvvvvvvvvvvvvvvvvvv Relevant section which I need to copy below once correct
$key = array_search($row['standard'],$comparision_string);
if($key !== false) {
$comparision_string[$key]["quantity"] += $row['quantity'];
}else{
$comparision_string[$number_count]["description"] = $row['standard'];
$comparision_string[$number_count]["quantity"] = $row['quantity'];
}
//END of relevant section ^^^^^^^^^^^^^^^^^^^^^^^^^^
}elseif($row['option_1_answers'] != '' && $row['option_2_answers'] == '' && $row['option_3_answers'] == '' && $row['option_4_answers'] == '') {
$comparision_string[$number_count]["description"] = $row['standard'] . "[" . $row['option_1_title'] . " = " . $row['option_1_answers'] . "]";
}elseif($row['option_1_answers'] != '' && $row['option_2_answers'] != '' && $row['option_3_answers'] == '' && $row['option_4_answers'] == '') {
$comparision_string[$number_count]["description"] = $row['standard'] . "[" . $row['option_1_title'] . " = " . $row['option_1_answers'] . "]" . "[" . $row['option_2_title'] . " = " . $row['option_2_answers'] . "]";
}elseif($row['option_1_answers'] != '' && $row['option_2_answers'] != '' && $row['option_3_answers'] != '' && $row['option_4_answers'] == '') {
$comparision_string[$number_count]["description"] = $row['standard'] . "[" . $row['option_1_title'] . " = " . $row['option_1_answers'] . "]" . "[" . $row['option_2_title'] . " = " . $row['option_2_answers'] . "]" . "[" . $row['option_3_title'] . " = " . $row['option_3_answers'] . "]";
}elseif($row['option_1_answers'] != '' && $row['option_2_answers'] != '' && $row['option_3_answers'] != '' && $row['option_4_answers'] != '') {
$comparision_string[$number_count]["description"] = $row['standard'] . "[" . $row['option_1_title'] . " = " . $row['option_1_answers'] . "]" . "[" . $row['option_2_title'] . " = " . $row['option_2_answers'] . "]" . "[" . $row['option_3_title'] . " = " . $row['option_3_answers'] . "]". "[" . $row['option_4_title'] . " = " . $row['option_4_answers'] . "]";
}
$comparision_string[$number_count]["quantity"] = $row['quantity'];
$comparision_string[$number_count]["collected"] = $row['collected'];
$comparision_string[$number_count]["ordered"] = $row['ordered'];
$comparision_string[$number_count]["collect_by"] = $row['collect_by'];
$comparision_string[$number_count]["order_by"] = $row['order_by'];
$comparision_string[$number_count]["datetime_ordered"] = $row['datetime_ordered'];
$comparision_string[$number_count]["datetime_collected"] = $row['datetime_collected'];
$comparision_string[$number_count]["ids"] = $row['ids'];
$comparision_string[$number_count]["standard"] = $row['standard'];
echo "<tr><td><img src='" . $row['image'] . "'></td><td>" .$comparision_string[$number_count]['quantity'] . " of " . $comparision_string[$number_count]['description'] . "</td><td>";
我得到一个警告:array_search()期望参数2是数组,在
中给出null我想有A)一种方法可以使这项工作和B)一种更好的方法
答案 0 :(得分:2)
您要求array_search()
在$row['standard']
之前找到$comparision_string
才能宣布这一点 - 这对您来说永远不会有效。
此外,我无法理解你想要实现的目标。你是否计算总共4个答案中的总答案?如果答案2和4为空怎么办?你的病情阻滞不会发现。
我没有看到$number_count
是什么的声明。没有它,它将永久为0。
我非常怀疑你的$comparision_string[$number_count]["description"]
价值分配过程不会产生你想要得到的东西 - 但同样,我真的不知道你在做什么。
我会假设您在查询中使用$ids
之前正在对其进行清理/验证。
是的,我同意你的意见,有:
A)使这项工作的方法和B)更好的方法
但是没有人可以自信地帮助你缺乏有关你正在进行的任务的信息。
最后一个假设:如果你想计算四个options_n_answers中有多少个空值,那么你可以这样做:
// isolate the four answer elements
$answers_array=array($row['option_1_answers'],$row['option_2_answers'],
$row['option_3_answers'],$row['option_4_answers']);
// retain only empty valued elements
$empty_answers_array=array_intersect($answers_array,array(''));
// count the empties
$empty_answer_count=sizeof($empty_answers_array);
// then you can subtract that from sizeof($answers_array) or whatever you need