Есть следующий ассоциативный массив, который содержит список всех координат:
$array = (Array
(
[lat] => -42.158362
[lng] => 147.2527163
)
Array
(
[lat] => -33.8692785
[lng] => 150.9298603
)
Array
(
[lat] => -42.386829
[lng] => 145.742374
)
Array
(
[lat] => -31.048654
[lng] => 151.546292
)
Array
(
[lat] => -35.085088
[lng] => 138.589769
)
Array
(
[lat] => -37.885309
[lng] => 145.080471
)
Array
(
[lat] => -35.09244
[lng] => 138.694463
)
Array
(
[lat] => -34.969993
[lng] => 138.627648
)
Array
(
[lat] => -33.914798
[lng] => 151.005811
)
Array
(
[lat] => -38.086152
[lng] => 143.190695
))
Так же есть переменная с нужными мне координатами в виде строки
$var = "-37.885309, 145.080471-38.086152, 143.190695"
Как я могу преобразовать свой ассоциативный массив, что бы в нём остались только массивы содержащие нужные мне координаты, не меняя структуру ассоциативного массива, а остальные массивы удалить?
$var = "-37.885309, 145.080471-38.086152, 143.190695";
$varArr = preg_split( "/(,|-)/", $var);
$ar = [
...
...
];
array_walk($ar, function ($item1, $key) use ($varArr, &$ar) {
if (!in_array(abs($item1['lat']), $varArr) || !in_array(abs($item1['lng']), $varArr)) {
unset($ar[$key]);
}
});
array_values($ar);
пример
С помощью регулярного выражения ищем вхождения нужных координат, в итоге получим массив со следующими элементами:
$matches[1][0]
— -37.885309,$matches[2][0]
— 145.080471,$matches[1][1]
— -38.086152,$matches[2][1]
— 143.190695.После чего в цикле перебора массива сравниваем элементы lat
и lng
, и записываем в результирующий массив все совпадения.
$coordinates = "-37.885309, 145.080471-38.086152, 143.190695";
preg_match_all('/(-[\d]+\.[\d]+)\,(\s[\d]+\.[\d]+)/', $coordinates, $matches);
$result = [];
foreach ($array as $key => $value) {
if (($value['lat'] == $matches[1][0] && $value['lng'] == $matches[2][0]) ||
($value['lat'] == $matches[1][1] && $value['lng'] == $matches[2][1])
) {
$result[] = [
'lat' => $value['lat'],
'lng' => $value['lng'],
];
}
}
print_r($result);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
В базе данных русский текст отображается нормально, но когда вывожу ассоциативный массив, то получается что-то типо тоРскам
Я пытаюсь вызвать в шаблоне обратной связи (custom:mainfeedback), вывести соглашение о персональных данных ('bitrix:main
CDF DTF LEND, CDF POLO LEND, FER POLO LEND - название аккаунтов
Герой игры обладает никнеймом, силой, ловкостью и интеллектом, помимо этого у него есть здоровье, мана и опыт и позиция на карте в координатах...