PHP - объединить 2 элемента из одного 2-мерного массива

0

У меня есть массив, который я хочу объединить два элемента в один, но моя проблема заключается в том, что я не знаю, как работает логика. здесь мой код:

  1. запросы на получение данных из базы данных MySQL (откуда поступает DATA):

    $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].

Вопросы: Как достичь этой цели? и какова логика для этого?

PS Я делаю это для моего алгоритма кластеризации KMeans.

  • 0
    Из вашего кода мне кажется, что вы получаете с сервера массив, в котором каждый элемент содержит массив длины 1. Это правильно? Вы хотите, чтобы вывод был [80,55],[86,59],.... или [80,55,86,59,...] ?
  • 0
    Я хочу, чтобы выходные данные были [80,55], [86,59] и так далее ... да, вы правы.
Теги:
arrays
multidimensional-array
web

2 ответа

0
Лучший ответ

Для достижения ожидаемого результата есть два решения.

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. Если ваше ожидание заключается в сохранении значений в этом формате для выполнения какой-либо другой операции, измените, как показано ниже

Шаг 3, как показано ниже

<?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 = [];
    }
  }
}
?>

Шаг 4, как показано ниже

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

Не отрываясь от ответа Somnath Sinha, вы также можете попробовать метод array_chunk(). Эта замена для шага 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);
?>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню