在csv文件中转储数组时数据不匹配


Data mismatch while dumping array in csv file

我有 mysql 获取的 7 个数组,并且它正常工作,每个数组正好有 9 行,这些行city_names但其中一个数组只有 7 行,因为结果上的两个值为 null .这会导致在 csv 中转储文件时出现混淆。我使用以下代码。有没有办法按城市名称检查它而不使用 foreach 作为 eact 数组?

        for($i=0 ; $i <= $count-2 ; $i++)
        {
            $data[] = $all_restaurants_opr_no_temp_off[$i]['city_name'];
            $data[] = $all_restaurants_opr[$i]['total'];

            $data[] = $all_restaurants_opr_no_temp_off[$i]['total'];

            $data[] = $restaurants_opr_temp_off[$i]['total'];
                $data[] = $restaurants_opr_operations_closed[$i]['total'];
                $data[] = $restaurants_opr_automated[$i]['total'];
                $data[] = $restaurants_opr_automated_working[$i]['total'];
                $data[] = $restaurants_opr_online_payment[$i]['total'];
                $data[] = $restaurants_opr_online_payment_with_tempoff[$i]['total'];
                $data[] = $restaurants_opr_atleast_one_order[$i]['total'];
            fputcsv($fp, $data,",");
            unset($data);
            }

Array 1:
array(9) {
   [0]=>
  array(2) {
    ["city_name"]=>
    string(9) "Bangalore"
    ["total"]=>
    string(3) "687"
  }
  [1]=>
  array(2) {
    ["city_name"]=>
    string(9) "Hyderabad"
    ["total"]=>
    string(2) "16"
  }
  [2]=>
  array(2) {
    ["city_name"]=>
    string(6) "Mumbai"
    ["total"]=>
    string(3) "568"
  }
  [3]=>
  array(2) {
    ["city_name"]=>
    string(7) "Chennai"
    ["total"]=>
    string(3) "139"
  }
  [4]=>
  array(2) {
    ["city_name"]=>
    string(4) "Pune"
    ["total"]=>
    string(3) "232"
  }
  [5]=>
  array(2) {
    ["city_name"]=>
    string(9) "Ghaziabad"
    ["total"]=>
    string(2) "57"
  }
  [6]=>
  array(2) {
    ["city_name"]=>
    string(5) "Noida"
    ["total"]=>
    string(2) "77"
  }
  [7]=>
  array(2) {
    ["city_name"]=>
    string(9) "Faridabad"
    ["total"]=>
    string(1) "4"
  }
  [8]=>
  array(2) {
    ["city_name"]=>
    string(7) "Gurgaon"
    ["total"]=>
    string(3) "113"
  }
}
Array 2:
array(9) {
  [0]=>
  array(2) {
    ["city_name"]=>
    string(9) "Bangalore"
    ["total"]=>
    string(3) "674"
  }
  [1]=>
  array(2) {
    ["city_name"]=>
    string(9) "Hyderabad"
    ["total"]=>
    string(2) "16"
  }
  [2]=>
  array(2) {
    ["city_name"]=>
    string(6) "Mumbai"
    ["total"]=>
    string(3) "547"
  }
  [3]=>
  array(2) {
    ["city_name"]=>
    string(7) "Chennai"
    ["total"]=>
    string(3) "135"
  }
  [4]=>
  array(2) {
    ["city_name"]=>
    string(4) "Pune"
    ["total"]=>
    string(3) "202"
  }
  [5]=>
  array(2) {
    ["city_name"]=>
    string(9) "Ghaziabad"
    ["total"]=>
    string(2) "56"
  }
  [6]=>
  array(2) {
    ["city_name"]=>
    string(5) "Noida"
    ["total"]=>
    string(2) "77"
  }
  [7]=>
  array(2) {
    ["city_name"]=>
    string(9) "Faridabad"
    ["total"]=>
    string(1) "4"
  }
  [8]=>
  array(2) {
    ["city_name"]=>
    string(7) "Gurgaon"
    ["total"]=>
    string(3) "111"
  }
}
Array 3:(Problem is here)
array(6) {
  [0]=>
  array(2) {
    ["city_name"]=>
    string(9) "Bangalore"
    ["total"]=>
    string(2) "13"
  }
  [1]=>
  array(2) {
    ["city_name"]=>
    string(6) "Mumbai"
    ["total"]=>
    string(2) "21"
  }
  [2]=>
  array(2) {
    ["city_name"]=>
    string(7) "Chennai"
    ["total"]=>
    string(1) "4"
  }
  [3]=>
  array(2) {
    ["city_name"]=>
    string(4) "Pune"
    ["total"]=>
    string(2) "30"
  }
  [4]=>
  array(2) {
    ["city_name"]=>
    string(9) "Ghaziabad"
    ["total"]=>
    string(1) "1"
  }
  [5]=>
  array(2) {
    ["city_name"]=>
    string(7) "Gurgaon"
    ["total"]=>
    string(1) "2"
  }
}

我不确定我是否 100% 理解这个问题,但也许您可以测试每个值是否为 null,如果它是,则在那里放置一个默认值,例如,对于这一行,您可以在 for 循环上方使用它:

foreach($badArray as $b){
  $reformattedArray[$b['city_name']] = $b['total'];
}

然后在 for 循环中用这个替换坏数组行

data[] = is_null($reformattedArray[$all_restaurants_opr_no_temp_off[$i]['city_name']]) ? 'Default' : $reformattedArray[$all_restaurants_opr_no_temp_off[$i]['city_name']];