Расположить значения в массиве php / mysql - PullRequest
1 голос
/ 28 сентября 2019

Я экспортирую данные из mysqli в базу данных Google Firebase.В таблице Firebase один из столбцов с именем siteGeoCode (широта и долгота) имеет значения типа [17.426083,78.439241] в формате массива.Но в таблице mysqli есть два отдельных столбца для широты и долготы.Я пытаюсь получить записи, как показано ниже, и преобразовать их в формат массива.

$emp_array = array();
$sel_query = "select companyId,countryCode,createdBy,createdDat,`latitude`,`longitude`,siteName,`status` from customers limit 0,3";
$res = mysqli_query($mysqliConn,$sel_query);
while($sel_row = mysqli_fetch_assoc($res))
{
    $emp_array[]  = $sel_row;
    $lat_array['siteGeoCode'][0] = $sel_row['latitude'];
    $lat_array['siteGeoCode'][1] = $sel_row['longitude'];
    array_push($emp_array,$lat_array);
}

// output

[0] => Array
(
[companyId] => iArwfGLC1lE6x3lO24cb
[countryCode] => 91
[createdBy] => X54P6gVJ7dA4Fi2fjEmc
[createdDate] => 2019-08-20 00:58:08
[latitude] => 15.6070347
[longitude] => 79.6146273
[siteName] => Ongole
[status] => 1
)

[1] => Array
(
[siteGeoCode] => Array
    (
        [0] => 15.6070347
        [1] => 79.6146273
    )

)

[2] => Array
(
[companyId] => YPbhSLWQfAR6ThhszSAf
[countryCode] => 91
[createdBy] => iArwfGLC1lE6x3lO24cb
[createdDate] => 2019-09-10 22:37:08
[latitude] => 
[longitude] => 
[siteName] => Madhap
[status] => 
)

[3] => Array
(
[siteGeoCode] => Array
    (
        [0] => 
        [1] => 
    )

)

, но мой желаемый результат должен быть примерно таким:

[0] => Array
(
[companyId] => iArwfGLC1lE6x3lO24cb
[countryCode] => 91
[createdBy] => X54P6gVJ7dA4Fi2fjEmc
[createdDate] => 2019-08-20 00:58:08
[siteGeoPoint] => Array
    (
        [0] => 15.6070347
        [1] => 79.6146273
    )
[siteName] => Ongole
[status] => 1
)

[1] => Array
(
[companyId] => YPbhSLWQfAR6ThhszSAf
[countryCode] => 91
[createdBy] => iArwfGLC1lE6x3lO24cb
[createdDate] => 2019-09-10 22:37:08
[siteGeoPoint] => Array
    (
        [0] => 
        [1] => 
    )
[siteName] => Madhap
[status] => 
)

How can I achieve this ? Any help would be greatly appreciated. Thanks in advance

Ответы [ 2 ]

1 голос
/ 28 сентября 2019

Вы можете использовать следующий код.

$output_array = array();
while($sel_row = mysqli_fetch_assoc($res)) {


$output_array[] = array(
          'companyId' => $sel_row['companyId'],
          'countryCode' => $sel_row['countryCode'],
          'createdBy' => $sel_row['createdBy'],
          'createdDate' => $sel_row['createdDate'],
          'siteGeoPoint' => array($sel_row['latitude'], $sel_row['longitude']),
          'siteName' => $sel_row['siteName'],
          'status' => $sel_row['status'],
        );
    }
print_r($output_array);

вы можете увидеть разницу, которую вы использовали для массива, и я это сделал.Исходя из вашего вывода, я предполагаю, что вы напечатали разные массивы.

Надеюсь, что код даст вам желаемый результат!

1 голос
/ 28 сентября 2019

Если вы хотите поместить результат столбцов широты / долготы в сгруппированный результат, выполните манипуляции со строкой, а затем добавьте его в набор результатов, как показано ниже.

$result = [];
while ($row = mysqli_fetch_assoc($res)) {
    // group geo
    $row['siteGeoCode'] = [
        $row['latitude'],
        $row['longitude']
    ];
    // unset uneeded
    unset($row['latitude'], $row['longitude']);

    // place in result
    $result[] = $row;
}
...