I'm trying to draw polyline in a map, totally new to PHP,I tried already researched previous topic but their format doesn't match to the one I need or using other dev language.
How to convert $polylines_data as string
$polylines_data="9.76716,118.74789000000001,9.76665,118.74787,9.766100000000002,118.74787,9.76609,118.74773,9.76609,118.74745000000001,9.76519,118.74742,9.7644,118.74737,9.76382,118.74734000000001,9.7626,118.74728,9.76125,118.7472,9.760670000000001,118.74719,9.760280000000002,118.74724,9.75932,118.74741000000002,9.75826,118.74757000000001,9.75787,118.74763000000002,9.7575,118.74766000000001,9.757290000000001,118.74765000000001,9.756670000000002,118.74752000000001,9.755870000000002,118.74736000000001,9.75567,118.74732000000002,9.755320000000001,118.74732000000002,9.75441,118.74749000000001,9.753960000000001,118.74759000000002,9.753210000000001,118.74776000000001,9.752730000000001,118.74778,9.752510000000001,118.74777,9.75197,118.74773,9.75145,118.74772000000002,9.750720000000001,118.74776000000001,9.75051,118.74777,9.749300000000002,118.74785000000001,9.749270000000001,118.74863,9.74925,118.74941000000001,9.74914,118.75251000000002,9.747770000000001,118.75248,9.74609,118.75245000000001,9.74606,118.75307000000001,9.746080000000001,118.75314000000002,9.746120000000001,118.75316000000001,9.74624,118.75316000000001";
into this format or set of orders using PHP 👇
[
[-122.483696, 37.833818],
[-122.483482, 37.833174],
[-122.483396, 37.8327],
[-122.483568, 37.832056],
[-122.48404, 37.831141],
[-122.48404, 37.830497],
[-122.483482, 37.82992],
[-122.483568, 37.829548],
[-122.48507, 37.829446],
[-122.4861, 37.828802],
[-122.486958, 37.82931],
[-122.487001, 37.830802],
[-122.487516, 37.831683],
[-122.488031, 37.832158],
[-122.488889, 37.832971],
[-122.489876, 37.832632],
[-122.490434, 37.832937],
[-122.49125, 37.832429],
[-122.491636, 37.832564],
[-122.492237, 37.833378],
[-122.493782, 37.833683]
]
I'm trying to implement it here on client's end, all I need is the format from the backend end using PHP.
map.addSource('route', {
'type': 'geojson',
'data': {
'type': 'Feature',
'properties': {},
'geometry': {
'type': 'LineString',
'coordinates': [
[-122.483696, 37.833818],
[-122.483482, 37.833174],
[-122.483396, 37.8327],
[-122.483568, 37.832056],
[-122.48404, 37.831141],
[-122.48404, 37.830497],
[-122.483482, 37.82992],
[-122.483568, 37.829548],
[-122.48507, 37.829446],
[-122.4861, 37.828802],
[-122.486958, 37.82931],
[-122.487001, 37.830802],
[-122.487516, 37.831683],
[-122.488031, 37.832158],
[-122.488889, 37.832971],
[-122.489876, 37.832632],
[-122.490434, 37.832937],
[-122.49125, 37.832429],
[-122.491636, 37.832564],
[-122.492237, 37.833378],
[-122.493782, 37.833683]
]
}
}
});
Really appreciate if you can help. Thanks in advance. 🙌
You could use explode() and foreach over result to get what you want:
<?php
$polylines_data="9.76716,118.74789000000001,9.76665,118.74787,9.766100000000002,118.74787,9.76609,118.74773,9.76609,118.74745000000001,9.76519,118.74742,9.7644,118.74737,9.76382,118.74734000000001,9.7626,118.74728,9.76125,118.7472,9.760670000000001,118.74719,9.760280000000002,118.74724,9.75932,118.74741000000002,9.75826,118.74757000000001,9.75787,118.74763000000002,9.7575,118.74766000000001,9.757290000000001,118.74765000000001,9.756670000000002,118.74752000000001,9.755870000000002,118.74736000000001,9.75567,118.74732000000002,9.755320000000001,118.74732000000002,9.75441,118.74749000000001,9.753960000000001,118.74759000000002,9.753210000000001,118.74776000000001,9.752730000000001,118.74778,9.752510000000001,118.74777,9.75197,118.74773,9.75145,118.74772000000002,9.750720000000001,118.74776000000001,9.75051,118.74777,9.749300000000002,118.74785000000001,9.749270000000001,118.74863,9.74925,118.74941000000001,9.74914,118.75251000000002,9.747770000000001,118.75248,9.74609,118.75245000000001,9.74606,118.75307000000001,9.746080000000001,118.75314000000002,9.746120000000001,118.75316000000001,9.74624,118.75316000000001";
$coords = explode(',', $polylines_data);
$points = array();
for ($i = 0; $i < count($coords); $i += 2) {
$points[] = array((float)$coords[$i+1], (float)$coords[$i]);
}
echo '<pre>';
print_r($points);
Output is:
Array
(
[0] => Array
(
[0] => 118.74789
[1] => 9.76716
)
[1] => Array
(
[0] => 118.74787
[1] => 9.76665
)
[2] => Array
(
[0] => 118.74787
[1] => 9.7661
)
[3] => Array
(
[0] => 118.74773
[1] => 9.76609
)
[4] => Array
(
[0] => 118.74745
[1] => 9.76609
)
[5] => Array
(
[0] => 118.74742
[1] => 9.76519
)
[6] => Array
(
[0] => 118.74737
[1] => 9.7644
)
[7] => Array
(
[0] => 118.74734
[1] => 9.76382
)
[8] => Array
(
[0] => 118.74728
[1] => 9.7626
)
[9] => Array
(
[0] => 118.7472
[1] => 9.76125
)
[10] => Array
(
[0] => 118.74719
[1] => 9.76067
)
[11] => Array
(
[0] => 118.74724
[1] => 9.76028
)
[12] => Array
(
[0] => 118.74741
[1] => 9.75932
)
[13] => Array
(
[0] => 118.74757
[1] => 9.75826
)
[14] => Array
(
[0] => 118.74763
[1] => 9.75787
)
[15] => Array
(
[0] => 118.74766
[1] => 9.7575
)
[16] => Array
(
[0] => 118.74765
[1] => 9.75729
)
[17] => Array
(
[0] => 118.74752
[1] => 9.75667
)
[18] => Array
(
[0] => 118.74736
[1] => 9.75587
)
[19] => Array
(
[0] => 118.74732
[1] => 9.75567
)
[20] => Array
(
[0] => 118.74732
[1] => 9.75532
)
[21] => Array
(
[0] => 118.74749
[1] => 9.75441
)
[22] => Array
(
[0] => 118.74759
[1] => 9.75396
)
[23] => Array
(
[0] => 118.74776
[1] => 9.75321
)
[24] => Array
(
[0] => 118.74778
[1] => 9.75273
)
[25] => Array
(
[0] => 118.74777
[1] => 9.75251
)
[26] => Array
(
[0] => 118.74773
[1] => 9.75197
)
[27] => Array
(
[0] => 118.74772
[1] => 9.75145
)
[28] => Array
(
[0] => 118.74776
[1] => 9.75072
)
[29] => Array
(
[0] => 118.74777
[1] => 9.75051
)
[30] => Array
(
[0] => 118.74785
[1] => 9.7493
)
[31] => Array
(
[0] => 118.74863
[1] => 9.74927
)
[32] => Array
(
[0] => 118.74941
[1] => 9.74925
)
[33] => Array
(
[0] => 118.75251
[1] => 9.74914
)
[34] => Array
(
[0] => 118.75248
[1] => 9.74777
)
[35] => Array
(
[0] => 118.75245
[1] => 9.74609
)
[36] => Array
(
[0] => 118.75307
[1] => 9.74606
)
[37] => Array
(
[0] => 118.75314
[1] => 9.74608
)
[38] => Array
(
[0] => 118.75316
[1] => 9.74612
)
[39] => Array
(
[0] => 118.75316
[1] => 9.74624
)
)
I have array who showing result like this
Array
(
[0] => AED
)
Array
(
[0] => 1
)
Array
(
[0] => 4071.64
)
Array
(
[0] => 3603.98
)
Array
(
[0] => AUD
)
Array
(
[0] => 1
)
Array
(
[0] => 10151.11
)
Array
(
[0] => 9964.65
)
Array
(
[0] => CHF
)
Array
(
[0] => 1
)
Array
(
[0] => 14162.66
)
Array
(
[0] => 13912.70
)
Array
(
[0] => CNY
)
Array
(
[0] => 1
)
Array
(
[0] => 2177.73
)
Array
(
[0] => 2024.07
)
Array
(
[0] => EUR
)
Array
(
[0] => 1
)
Array
(
[0] => 16080.01
)
Array
(
[0] => 15813.89
)
Array
(
[0] => GBP
)
Array
(
[0] => 1
)
Array
(
[0] => 18476.74
)
Array
(
[0] => 18180.11
)
Array
(
[0] => HKD
)
Array
(
[0] => 1
)
Array
(
[0] => 1802.15
)
Array
(
[0] => 1778.28
)
Array
(
[0] => JPY
)
Array
(
[0] => 1
)
Array
(
[0] => 128.40
)
Array
(
[0] => 125.26
)
Array
(
[0] => NZD
)
Array
(
[0] => 1
)
Array
(
[0] => 9711.35
)
Array
(
[0] => 9529.10
)
Array
(
[0] => SAR
)
Array
(
[0] => 1
)
Array
(
[0] => 3765.13
)
Array
(
[0] => 3727.50
)
Array
(
[0] => SGD
)
Array
(
[0] => 1
)
Array
(
[0] => 10496.44
)
Array
(
[0] => 10308.02
)
Array
(
[0] => USD
)
Array
(
[0] => 1
)
Array
(
[0] => 14120.00
)
Array
(
[0] => 13980.00
)
I want to merge that array into one array. My question is how to merge that array the output must be like this
array(
[0]=>array(
[0]=>AED
[1]=>1
[2]=>4071.64
[3]=>3603.98
)
[1]=>array(
[0]=>AUD
[1]=>1
[2]=>10151.11
[3]=>9964.65
)
[3]=>array(
[0]=>CHF
[1]=>1
[2]=>14162.66
[3]=>13912.70
)
//and so on
)
OR the result like this
Array
(
[0] => AED
[1] => 1
[2] => 4071.64
[3] => 3603.98
[4] => AUD
[5] => 1
[6] => 10151.11
[7] => 9964.65
[8] => CHF
[9] => 1
[10] => 14162.66
[11] => 13912.70
[12] => CNY
[13] => 1
[14] => 2177.73
[15] => 2024.07
[16] => EUR
[17] => 1
[18] => 16080.01
[19] => 15813.89
[20] => GBP
[21] => 1
[22] => 18476.74
[23] => 18180.11
[24] => HKD
[25] => 1
[26] => 1802.15
[27] => 1778.28
[28] => JPY
[29] => 1
[30] => 128.40
[31] => 125.26
[32] => NZD
[33] => 1
[34] => 9711.35
[35] => 9529.10
[36] => SAR
[37] => 1
[38] => 3765.13
[39] => 3727.50
[40] => SGD
[41] => 1
[42] => 10496.44
[43] => 10308.02
[44] => USD
[45] => 1
[46] => 14120.00
[47] => 13980.00
)
Please help me, brothers and sisters, I have tried using array_merge() and array_push() but not showing the right result. Thanks
You can use array_chunk for that if it's always inner arrays of length == 4.
$text = "AED 1 4071.64 3603.98 AUD 1 10151.11 9964.65";
$result= array_chunk( explode( ' ', $text ), 4 );
var_dump( $result );
Here's a php sandbox link.
Try this code:
$array_data = array(
array(
AED, 1, 4071.64, 3603.98
),
array(
AUD, 1, 10151.11, 9964.65
),
array(
CHF, 1, 14162.66, 13912.70
),
);
$a = [];
foreach($array_data as $data) {
$a = array_merge($a, $data);
}
This question already has answers here:
How to Flatten a Multidimensional Array?
(31 answers)
Closed 7 months ago.
I have code like this
$years_of_service = mysqli_query($mysqli, "SELECT YEAR(curdate())-Year_Entry FROM result");
$result = mysqli_fetch_all($years_of_service,MYSQLI_NUM);
When i try to echo that result to see what happened with that code, i found this kind of array
Array ( [0] => Array ( [0] => 25 ) [1] => Array ( [0] => 25 ) [2] => Array ( [0] => 25 ) [3] => Array ( [0] => 25 ) [4] => Array ( [0] => 25 ) [5] => Array ( [0] => 14 ) [6] => Array ( [0] => 14 ) [7] => Array ( [0] => 14 ) [8] => Array ( [0] => 14 ) [9] => Array ( [0] => 14 ) [10] => Array ( [0] => 12 ) [11] => Array ( [0] => 12 ) [12] => Array ( [0] => 12 ) [13] => Array ( [0] => 12 ) [14] => Array ( [0] => 12 ) [15] => Array ( [0] => 11 ) [16] => Array ( [0] => 11 ) [17] => Array ( [0] => 11 ) [18] => Array ( [0] => 11 ) [19] => Array ( [0] => 11 ) [20] => Array ( [0] => 10 ) [21] => Array ( [0] => 10 ) [22] => Array ( [0] => 10 ) [23] => Array ( [0] => 10 ) [24] => Array ( [0] => 10 ) [25] => Array ( [0] => 9 ) [26] => Array ( [0] => 9 ) [27] => Array ( [0] => 9 ) [28] => Array ( [0] => 9 ) [29] => Array ( [0] => 8 ) [30] => Array ( [0] => 8 ) [31] => Array ( [0] => 8 ) [32] => Array ( [0] => 8 ) [33] => Array ( [0] => 7 ) [34] => Array ( [0] => 7 ) [35] => Array ( [0] => 7 ) [36] => Array ( [0] => 7 ) [37] => Array ( [0] => 6 ) [38] => Array ( [0] => 6 ) [39] => Array ( [0] => 6 ) [40] => Array ( [0] => 6 ) [41] => Array ( [0] => 6 ) [42] => Array ( [0] => 6 ) [43] => Array ( [0] => 6 ) [44] => Array ( [0] => 6 ) [45] => Array ( [0] => 6 ) [46] => Array ( [0] => 5 ) [47] => Array ( [0] => 5 ) [48] => Array ( [0] => 5 ) [49] => Array ( [0] => 5 ) [50] => Array ( [0] => 5 ) [51] => Array ( [0] => 5 ) [52] => Array ( [0] => 5 ) [53] => Array ( [0] => 5 ) [54] => Array ( [0] => 5 ) [55] => Array ( [0] => 4 ) [56] => Array ( [0] => 4 ) [57] => Array ( [0] => 4 ) [58] => Array ( [0] => 4 ) [59] => Array ( [0] => 4 ) [60] => Array ( [0] => 4 ) [61] => Array ( [0] => 4 ) [62] => Array ( [0] => 4 ) [63] => Array ( [0] => 4 ) [64] => Array ( [0] => 4 ) [65] => Array ( [0] => 4 ) [66] => Array ( [0] => 4 ) [67] => Array ( [0] => 4 ) [68] => Array ( [0] => 4 ) [69] => Array ( [0] => 3 ) [70] => Array ( [0] => 3 ) [71] => Array ( [0] => 3 ) [72] => Array ( [0] => 3 ) [73] => Array ( [0] => 3 ) [74] => Array ( [0] => 3 ) [75] => Array ( [0] => 3 ) [76] => Array ( [0] => 3 ) [77] => Array ( [0] => 3 ) [78] => Array ( [0] => 2 ) [79] => Array ( [0] => 2 ) [80] => Array ( [0] => 2 ) [81] => Array ( [0] => 2 ) [82] => Array ( [0] => 1 ) [83] => Array ( [0] => 1 ) [84] => Array ( [0] => 1 ) [85] => Array ( [0] => 1 ) [86] => Array ( [0] => 0 ) [87] => Array ( [0] => 0 ) [88] => Array ( [0] => 0 ) [89] => Array ( [0] => 0 ) )
I want to make it become a simple array containing only its value like
Array(25,25,25,....)
What is the best approach i can use. I've tried to make it simple array with this
$simple = array_values($result);
But it did'nt work. It show the same output with $result. I will use it for map and reduce function to categorize years of service by specific range.
If PHP > 5.5.0 you can simply use array_column like as
$result = array_column($your_array,0);
or you can simply use call_user_func_array like as
call_user_func_array('array_merge',$your_array);
Demo
The reason this is happening is you're retrieving all rows (outer array) which are being returned as an array of columns (the inner arrays).
What you need to do is loop through the rows:
$years_of_service = mysqli_query($mysqli, "SELECT YEAR(curdate())-Year_Entry FROM result");
$result = mysqli_fetch_all($work_period,MYSQLI_NUM);
$data = [];
foreach ($result as $row) {
$data[] = $row[0];
}
Your array will now be 'flat':
$data => [
0 => 25,
1 => 24,
...
];
which will now return what you want when you use array_values:
$simple = array_values($data); // $simple will now equal Array(25, 24, ...)
You could try something like:
$simple = array();
foreach ($result as $value) {
$simple[] = $value[0];
}