У меня есть это в результате 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
Там действительно нет веских причин использовать 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;
}
Попробуй это.
$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++;
}