【问题标题】:PHP - Combine 2 elements from the same 2 dimensional arrayPHP - 组合来自同一个二维数组的 2 个元素
【发布时间】:2018-01-14 08:32:16
【问题描述】:

我有一个数组,我想将这两个元素合并为一个,但我的问题是我不知道逻辑是如何工作的。这是我的代码:

  1. 从 MySQL 数据库中检索数据的查询(数据来自哪里)

    $Retrieve_Answers = "SELECT * FROM Answers";
    $Result_Answers = mysqli_query($Connection, $Retrieve_Answers);
    
  2. 数据的数组存储声明:

    $points = array();

  3. 从MySql数据库中检索数据的过程

    if(mysqli_num_rows($Result_Answers) > 0){ while($Retrieved_Data = mysqli_fetch_assoc($Result_Answers)){ $points[] = $Retrieved_Data; } }

  4. 打印 $points 数组中的数据

    echo "These are the $TotalDataPoints data points: "; foreach($points as $point){ echo "["; echo $point['Answer_Data']; echo "], "; } echo "";

**输出:**

[80]、[55]、 [86]、[59]、[19]、[85]、[41]、[47]、[57]、[58]、 [76]、[22]、[94]、[60]、[13]、[93]、[90]、[48]、[52]、[54]、[62]、[46]、[88] ], [44], [85], [24], [63], [14], [51], [40], [75], [31], [86], [62], [81], [95]、[47]、[22]、[43]、[95]、[71]、[19]、[17]、[65]、[69]、[21]、[59]、[60] ], [59], [12], [15], [22], [49], [93], [56], [35], [18], [20], [39], [59], [50], [15], [10], [47], [75], [18], [13], [45], [30], [62], [95], [79], [64] ], [11], [92], [14], [94], [49], [39], [13], [60], [68], [62], [10], [74], [44]、[37]、[42]、[97]、[60]、[47]、[73]、

目标/目标:

我想要实现的是将数组中的两个元素组合成。

例如,从上面输出的前两个元素输出是 [80], [55], 对吧?我想要发生的事情是变成 [80, 55]。

问题:如何实现该目标?这样做的逻辑是什么?

附:我这样做是为了我的 KMeans 聚类算法。

【问题讨论】:

  • 从您的代码看来,您从服务器获得了一个数组,其中每个元素都包含一个长度为 1 的数组。这对吗?您希望输出为[80,55],[86,59],.... 还是[80,55,86,59,...]
  • 我希望输出为 [80,55]、[86,59] 等等。是的,你是对的。

标签: php mysql arrays web multidimensional-array


【解决方案1】:

有两种解决方案可以达到您的预期效果。

1。如果您的期望是立即显示值

第 4 步

的变化最小
<?php
// Number of elements you want to keep.
$numberOfElements = 2;
echo "These are the $TotalDataPoints data points: ";
foreach($points as $i => $point) {
  if ($i % $numberOfElements === 0) {
    echo "[";
  }
  echo $point['Answer_Data'];
  if ($i % $numberOfElements === $numberOfElements - 1) {
    echo "], ";        
  } else {
    echo ",";
  }
}
?>

2。如果您希望以该格式存储值以执行其他操作,请进行如下更改

第三步如下

<?php
// Number of elements you want to keep.
$numberOfElements = 2;
$tmp = [];
if (mysqli_num_rows($Result_Answers) > 0) {
  while($Retrieved_Data = mysqli_fetch_assoc($Result_Answers)){
    $tmp[] = $Retrieved_Data['Answer_Data'];

    if (count($tmp) === $numberOfElements) {
      $points[] = $tmp;
      $tmp = [];
    }
  }
}
?>

第四步如下

<?php
foreach($points as $point) {
  echo '[' . implode(', ', $point) . ']';
}
?>

【讨论】:

    【解决方案2】:

    在不放弃 Somnath Sinha 的回答的情况下,您也可以尝试 array_chunk() 方法。我觉得这个 Sinha 步骤 3 的替代品更干净。

    <?php
    // Number of elements you want to keep.
    $numberOfElements = 2;
    
    if (mysqli_num_rows($Result_Answers) > 0) {
      while($Retrieved_Data = mysqli_fetch_assoc($Result_Answers)){
        $points[] = $Retrieved_Data['Answer_Data'][0];    
      }
    }
    $points = array_chunk($points,$numberofElements);
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-06
      • 2013-07-18
      • 2013-09-26
      • 1970-01-01
      • 2013-07-09
      • 1970-01-01
      • 1970-01-01
      • 2018-02-01
      相关资源
      最近更新 更多