MySQL CONCAT_WS три столбца, эхо приводит к циклу foreach после explode ()

У меня есть это в результате MySQL (хранится как $result)

+-------------------------------------------------------------------------+
| CONCAT_WS('::', p.isMobile, p.contact_phone_id, p.contact_phone_number) |
+-------------------------------------------------------------------------+
| 0::1::123                                                               |
| 1::2::456                                                               |
| 0::3::789                                                               |
| 1::4::987                                                               |
| 0::5::654                                                               |
| 0::6::321                                                               |
| 1::7::123                                                               |
| 1::11::456                                                              |
+-------------------------------------------------------------------------+

Затем в цикле время я использую explode() для каждого ряда вроде: explode('::', $result), Как я могу использовать foreach() для вывода данных, как это (первые три строки в while итерация как пример):

Row 1: The first column is 0, the second column is 1, the third column is 123
Row 2: The first column is 1, the second column is 2, the third column is 456
Row 3: The first column is 0, the second column is 3, the third column is 789

0

Решение

Там действительно нет веских причин использовать foreach для вывода здесь. Было бы намного проще просто взорвать (), а затем выводить поля, как вы хотите их
(обратите внимание, что я создал массив и использовал для него array_shift (), чтобы имитировать выборку строк из базы данных):

<?php
$data = ['0::1::123', '1::2::456', '0::3::789', '1::4::987', '0::5::654', '0::6::321', '1::7::123', '1::11::456'];

$rownum = 0;
while($row = array_shift($data)) {
echo "Row $rownum: ";
$fields = explode('::', $row);
echo "The first column is {$fields[0]}, the second column is {$fields[1]}, the third column is {$fields[2]}";
echo "\n";
++$rownum;
}

Тем не менее, если вы действительно привязаны к использованию foreach для этой проблемы вы сначала захотите создать себе массив «имен позиций» (первое, второе, третье и т. д.), а затем зациклиться на THAT и извлекать тот же ключ из массива $ row, когда вы генерируете выход:

<?php
$data = ['0::1::123', '1::2::456', '0::3::789', '1::4::987', '0::5::654', '0::6::321', '1::7::123', '1::11::456'];

$positions = ['first', 'second', 'third'];

$rownum = 0;
while($row = array_shift($data)) {
echo "Row $rownum: ";
$fields = explode('::', $row);
$output = "";
foreach($positions as $pos => $posName) {
$output .= "the {$posName} column is {$fields[$pos]}, ";
}
$output = substr($output, 0, -2); // trim that trailing comma

echo "$output\n";
++$rownum;
}
0

Другие решения

Попробуй это.

$rowNumber = 1;
foreach($result as $value)
{
$field = explode('::', $value);
echo "Row {$rowNumber}: The first column is {$filed[0]}, the second column is {$field[1]}, the third column is {$field[2]}\n";

$rowNumber++;
}
0

По вопросам рекламы [email protected]