У меня есть массив, который я хочу объединить два элемента в один, но моя проблема заключается в том, что я не знаю, как работает логика. здесь мой код:
запросы на получение данных из базы данных MySQL (откуда поступает DATA):
$Retrieve_Answers = "SELECT * FROM Answers";
$Result_Answers = mysqli_query($Connection, $Retrieve_Answers);
Объявление хранилища массивов для данных:
$points = array();
Извлечение данных из базы данных MySql
if(mysqli_num_rows($Result_Answers) > 0){ while($Retrieved_Data = mysqli_fetch_assoc($Result_Answers)){ $points[] = $Retrieved_Data; } }
Печать данных из массива $ 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.
Для достижения ожидаемого результата есть два решения.
С минимальными изменениями на шаге 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 ",";
}
}
?>
Шаг 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) . ']';
}
?>
Не отрываясь от ответа 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);
?>
[80,55],[86,59],....
или[80,55,86,59,...]
?