Php 添加到数组值
我从mysql数据中获取:Php 添加到数组值,php,sql,arrays,Php,Sql,Arrays,我从mysql数据中获取: $starcik_o = mysql_query("select id, mapa, miasto, nazwa_obiektu from oferty where id = 28"); while($data = mysql_fetch_array($starcik_o, MYSQL_ASSOC)) $punkty[] = $data; 我想在这个数组中添加另一个表,我尝试这样做: foreach ($punkty as $item)
$starcik_o = mysql_query("select id, mapa, miasto, nazwa_obiektu from oferty where id = 28");
while($data = mysql_fetch_array($starcik_o, MYSQL_ASSOC)) $punkty[] = $data;
我想在这个数组中添加另一个表,我尝试这样做:
foreach ($punkty as $item)
{
$deserialized = unserialize($item['mapa']);
$punkty['long'] = $deserialized['lng'];
$punkty['lat'] = $deserialized['lat'];
}
但它并不像我想的那样工作,因为var_dump($punkty);给我看
array(3)
{
[0]=> array(4)
{
["id"]=> string(2) "28"
["mapa"]=> string(97) "a:3:{s:3:"lat";s:17:"49.21103723075132";s:3:"lng";s:18:"22.330280542373657";s:4:"zoom";s:2:"17";}"
["miasto"]=> string(5) "Cisna"
["nazwa_obiektu"]=> string(44) "Cisna - noclegi u Mirosławy w Bieszczadach"
}
["long"]=> string(18) "22.330280542373657"
["lat"]=> string(17) "49.21103723075132"
}
使用
您的循环正在执行它被告知要执行的操作:它从每个项目中获取
lat
和lng
字段,并将其写入$punkty
数组
我假设您希望lat
和lng
字段位于每个单独的项中,而不是数组的顶级。在这种情况下,将循环更改为:
foreach ($punkty as &$item) { // added the '&' to reference the item
$deserialized = unserialize($item['mapa']);
$item['long'] = $deserialized['lng']; // saving "long" to item
$item['lat'] = $deserialized['lat']; // saving "lat" to item
}
为什么在foreach循环中引用$punkty?“我以前从未见过这个大会。”马特说出了他的猫的名字@ariel还必须指出,
mysql.*
函数正在被弃用。使用PDO()或Mysqli()继续foreach($punkty as&$item)
很简单,我同意,我也会这样做。除了我想建议的解决方案,海报更可能看到或理解。当你刚开始编程时,理解引用和何时使用它们可能很困难,所以他更可能复制和粘贴你的解决方案,而不是真正理解正在发生的事情。但是,我并不反对,在大多数情况下,这是更好的方法。不要忘记在foreach()循环结束后取消设置($item)
foreach ($punkty as $key => $item)
{
$deserialized = unserialize($item['mapa']);
$punkty[$key]['long'] = $deserialized['lng'];
$punkty[$key]['lat'] = $deserialized['lat'];
}
foreach ($punkty as &$item) { // added the '&' to reference the item
$deserialized = unserialize($item['mapa']);
$item['long'] = $deserialized['lng']; // saving "long" to item
$item['lat'] = $deserialized['lat']; // saving "lat" to item
}
$starcik_o = mysql_query("select id, mapa, miasto, nazwa_obiektu from oferty where id = 28");
while($data = mysql_fetch_array($starcik_o, MYSQL_ASSOC))
{
$punkty1[] = $data[' id'];
$punkty2[] = $data['mapa'];
$punkty3[] = $data['miasto'];
$punkty4[] = $data['nazwa_obiektu'];
.....
}
try this code