Я хочу отобразить результат запроса в массиве.
Это оригинальные строки:
{
$locations = array();
$locations[0] = array("image"=>"https://www.XX.nl/assets/img/prinsenhof.png","lat"=>"52.012136","lng"=>"4.354596","emp_name"=>"Museum Prinsenhof Delft","emp_id"=>"Museum Prinsenhof Delft");
$locations[1] = array("image"=>"https://www.XX.nl/assets/img/ampelman.png","lat"=>"51.8988595","lng"=>"4.4186571","emp_name"=>"Ampelmann Operations","emp_id"=>"Ampelmann Operations");
$locations[2] = array("image"=>"https://www.XX.nl/assets/img/koekamp.png","lat"=>"52.0821565","lng"=>"4.3202341","emp_name"=>"Koekamp The Hague","emp_id"=>"Koekamp The Hague");
$locations[3] = array("image"=>"","lat"=>"51.9179543","lng"=>"4.3986012","emp_name"=>"Grote of Sint Janskerk Schiedam","emp_id"=>"Grote of Sint Janskerk Schiedam");
$locations[4] = array("image"=>"","lat"=>"52.0596095","lng"=>"4.2219163","emp_name"=>"The International School of The Hague","emp_id"=>"The International School of The Hague");
$locations[5] = array("image"=>"","lat"=>"52.012663","lng"=>"4.3558941","emp_name"=>"Oude Kerk","emp_id"=>"Oude Kerk");
$locations[6] = array("image"=>"","lat"=>"52.0769897","lng"=>"4.3170919","emp_name"=>"Spuiplein","emp_id"=>"Spuiplein");
$locations = json_encode($locations);
}
Поэтому я помещаю эту информацию в базу данных и хочу ее отобразить. Вот что я из этого сделал:
$qry = "SELECT image, lat, lng, name, emp_id FROM googlemaps";
if (!$result = $connection->query($qry)) {
echo 'Fout in query: '.$mysqli->error;
} else {
$a = 0;
while ($location = $result->fetch_assoc()){
$locations[$a] .= array("image"=>"https://www.XXXX.nl/assets/img/".$location['image'],"lat"=>$location['lat'],"lng"=>$location['lng'],"emp_name"=>$location['name'],"emp_id"=>$location['emp_id']);
$a++;
}
}
echo $locations;
echo $locations = json_encode($locations);
Есть идеи, как лучше?
ошибки:
Notice: Undefined offset: 0 in /index.php on line 137
Notice: Array to string conversion in /index.php on line 137
Notice: Array to string conversion in /index.php on line 137
Notice: Array to string conversion in /index.php on line 141
Надеюсь, теперь я сделал пост более понятным.






Notice: Undefined offset: 0 in /index.php on line 137 Notice: Array to string conversion in /index.php on line 137 Notice: Array to string conversion in /index.php on line 137
Это из-за:
$locations[$a] .= array("image"=>"https://www.XXXX.nl/assets/img/".$location['image'],"lat"=>$location['image'],"lng"=>$location['lng'],"emp_name"=>$location['name'],"emp_id"=>$location['emp_id']);
Первый говорит вам, что $locations[0] не существует. Остальное связано с тем, что вы пытаетесь добавить строку к массиву, что не имеет смысла.
Notice: Array to string conversion in /index.php on line 141
Это из-за echo $locations;. Вы не можете просто преобразовать массив в строку. Вам нужно будет использовать var_dump или print_r.
О том, как это сделать. Во-первых, включите исключения mysqli, чтобы вам не приходилось постоянно проверять наличие ошибок.
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
Затем переберите новые результаты строк толкать на locations, используя locations[] = array(...).
$result = $connection->query("SELECT image, lat, lng, name, emp_id FROM googlemaps");
while ($location = $result->fetch_assoc()){
$locations[] = array(
"image" => "https://www.XXXX.nl/assets/img/".$location['image'],
"lat" => $location['lat'],
"lng" => $location['lng'],
"emp_name" => $location['name'],
"emp_id" => $location['emp_id']
);
}
Вы можете сделать это более эффективным, выполнив все это в запросе.
$result = $connection->query(<<<QUERY
SELECT
CONCAT("https://www.XXXX.nl/assets/img/", image),
lat,
lng,
name as emp_name,
emp_id
FROM googlemaps
QUERY
);
while ($location = $result->fetch_assoc()){
# now use $location directly
}
Это позволяет избежать копирования каждой строки и создания потенциально огромного массива строк в памяти.
Если вам действительно нужно создать $locations, теперь вы можете сделать это за один шаг с помощью fetch_all, и это немного быстрее.
$locations = $result->fetch_all;
Мне непонятно, чего вы здесь пытаетесь достичь. Я думаю, вы пытаетесь превратить статический массив в массив, запрашиваемый из базы данных? Не могли бы вы показать ожидаемый результат?