PHP:填充多维数组,同时检查重复项并在发现时更新数量

PHP:填充多维数组,同时检查重复项并在发现时更新数量,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我正在尝试改进一个物料分拣页面,在该页面中,以前显示的每个项目都没有检查重复的数量,因此有时项目会出现多次,而不仅仅是更改数量 我认为最好重新编写代码来填充多维数组,并每次检查数组是否存在重复 代码如下: $get_materials = MySqlDb::query("SELECT * FROM material_item WHERE link_id = '$ids'"); while($row = mysqli_fetch_array($get_materials)) { if(

我正在尝试改进一个物料分拣页面,在该页面中,以前显示的每个项目都没有检查重复的数量,因此有时项目会出现多次,而不仅仅是更改数量

我认为最好重新编写代码来填充多维数组,并每次检查数组是否存在重复

代码如下:

$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>";
$get\u materials=MySqlDb::query(“选择*来自material\u项目,其中链接\u id=“$id”);
而($row=mysqli\u fetch\u数组($get\u materials)){
如果($row['option\u 1\u answers']=''&$row['option\u 2\u answers']=''&&$row['option\u 3\u answers']=''&&$row['option\u 4\u answers']=''){
//VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
$key=array\u search($row['standard'],$comparison\u string);
如果($key!==false){
$comparision_字符串[$key][“数量”]+=$row['quantity'];
}否则{
$comparision_string[$number_count][“description”]=$row['standard'];
$comparision_string[$number_count][“数量”]=$row['quantity'];
}
//相关章节结束^^^^^^^^^^^^^^^^^^^^^^^^^^
}elseif($row['option\u 1\u answers'!=''&$row['option\u 2\u answers']=''&$row['option\u 3\u answers']=''&$row['option\u 4\u answers']=''){
$comparision_string[$number_count][“description”]=$row['standard']。“[”$row['option_1_title']。“=”$row['option_1_answers']。“]”;
}elseif($row['option\u 1\u answers']!=''和$row['option\u 2\u answers']!=''和$row['option\u 3\u answers']=''和$row['option\u 4\u 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\u 1\u answers'!=”&$row['option\u 2\u answers'!=”&$row['option\u 3\u answers'!=”&$row['option\u 4\u answers']=”){
$comparision_string[$number_count][“description”]=$row['option_1_title']。“=”$row['option_1_title']。“]”[“$row['option_2_title']。”=“$row['option_2_answer']。”]。“[“$row['option_3_title']。”=“$row['option_3_answer'.”;
}elseif($row['option\u 1\u answers']!=''和$row['option\u 2\u answers']!=''和$row['option\u 3\u answers']!=''和$row['option\u 4\u answers']!=''){
$comparision_string[$number_count][“description”]=$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'] . "]";
}
$comparision_string[$number_count][“数量”]=$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'];
回显“$comparison\u string[$number\u count]['quantity']”的“$comparison\u string[$number\u count]['description']”的“$comparison\u string[$number\u count]['quantity']”;
我得到一个警告:array_search()希望参数2是array,在


我想有一种方法可以实现这一点,还有一种更好的方法,你要求
array\u search()
$comparison\u string
中找到
$row['standard']
,然后再声明它——这对你来说永远不会起作用

此外,我无法理解您试图实现的目标。您是否在计算4个总答案中的总答案?如果答案2和4为空怎么办?您的条件块无法捕捉到这一点

我没有看到任何关于
$number\u count
是什么的声明。如果没有这个声明,它将永久为0

我非常怀疑您的
$comparision\u string[$number\u count][“description”]
赋值过程不会产生您想要的结果——但我也不知道您在做什么

在查询中使用
$id
之前,我假设您正在清理/验证它

是的,我同意你的看法,有:

A) 使这项工作有效的方法和更好的方法

但是,没有人能够自信地帮助你解决你所承担任务的信息不足的问题

最后一个假设:如果您想计算四个选项答案中有多少空值,您可以这样做:

// 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

您要求
array\u search()
在声明之前在
$comparison\u string
中查找
$row['standard']
,这对您来说是行不通的

此外,我无法理解您试图实现的目标。您是否在计算4个总答案中的总答案?如果答案2和4为空怎么办?您的条件块无法捕捉到这一点

我没有看到任何关于
$number\u count
是什么的声明。如果没有这个声明,它将永久为0

我非常怀疑您的
$comparision\u string[$number\u count][“description”]
赋值过程不会产生您想要的结果——但我也不知道您在做什么

在查询中使用
$id
之前,我假设您正在清理/验证它

是的,我同意你的看法,有:

A) 使这项工作有效的方法和更好的方法

但是,没有人能够自信地帮助你,因为你缺乏关于你正在进行的任务的信息