PHP:如何尽可能广泛地操作这个数组

PHP:如何尽可能广泛地操作这个数组,php,arrays,loops,Php,Arrays,Loops,我正在开发一个供内部使用的API,我的SQL查询将结果作为数组返回给我。现在我需要一个部分(坐标)格式正确,但我不明白 我尝试了不同的循环和类似阵列拼接的东西,但我总是几乎没有结果。另一件事是,我将在所有结果上运行它,因此我需要一个性能良好的解决方案。看看这些例子,我很感谢你的帮助 我需要从该阵列获取: array ( 0 => array ( 'id' => '3', 'name' => 'Stadthalle', 'description' =&

我正在开发一个供内部使用的API,我的SQL查询将结果作为数组返回给我。现在我需要一个部分(坐标)格式正确,但我不明白

我尝试了不同的循环和类似阵列拼接的东西,但我总是几乎没有结果。另一件事是,我将在所有结果上运行它,因此我需要一个性能良好的解决方案。看看这些例子,我很感谢你的帮助

我需要从该阵列获取:

array (
  0 => array (
    'id' => '3',
    'name' => 'Stadthalle',
    'description' => 'Die Wiener Stadthalle',
    'created_at' => '2012-01-07 14:22:06',
    'coordinates' => '48.201187:16.334213, 48.200665:16.331606, 48.202989:16.331091, 48.203075:16.334192',
    'media' => 'image:http://farm5.staticflickr.com/4069/4679448909_1264ea4668_b.jpg,video:http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4',
  ),
  1 => array (
    'id' => '4',
    'name' => 'Schloss Schönbrunn',
    'description' => 'Schloss Schönbrunn, die ehemalige Sommerresidenz der Kaiserfamilie, zählt zu den schönsten Barockanlagen Europas.',
    'created_at' => '2012-01-10 01:06:48',
    'coordinates' => '48.201187:16.334213, 48.200665:16.331606, 48.202989:16.331091, 48.203075:16.334192',
    'media' => 'image:http://farm5.staticflickr.com/4069/4679448909_1264ea4668_b.jpg,video:http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4',
  ),
)
 array (
      0 => array (
        'id' => '3',
        'name' => 'Stadthalle',
        'description' => 'Die Wiener Stadthalle',
        'created_at' => '2012-01-07 14:22:06',
        'coordinates' => array(
            array('48.201187:16.334213'),
            array('48.200665:16.331606'),
            array('48.202989:16.331091'),
            array('48.203075:16.334192')
        ),
        'media' => 'image:http://farm5.staticflickr.com/4069/4679448909_1264ea4668_b.jpg,video:http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4',
      ),
      1 => array (
        'id' => '4',
        'name' => 'Schloss Schönbrunn',
        'description' => 'Schloss Schönbrunn, die ehemalige Sommerresidenz der Kaiserfamilie, zählt zu den schönsten Barockanlagen Europas.',
        'created_at' => '2012-01-10 01:06:48',
        'coordinates' => array(
            array('48.201187:16.334213'),
            array('48.200665:16.331606'),
            array('48.202989:16.331091'),
            array('48.203075:16.334192')
        ),
        'media' => 'image:http://farm5.staticflickr.com/4069/4679448909_1264ea4668_b.jpg,video:http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4',
      ),
    )
要创建此阵列,请执行以下操作:

array (
  0 => array (
    'id' => '3',
    'name' => 'Stadthalle',
    'description' => 'Die Wiener Stadthalle',
    'created_at' => '2012-01-07 14:22:06',
    'coordinates' => '48.201187:16.334213, 48.200665:16.331606, 48.202989:16.331091, 48.203075:16.334192',
    'media' => 'image:http://farm5.staticflickr.com/4069/4679448909_1264ea4668_b.jpg,video:http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4',
  ),
  1 => array (
    'id' => '4',
    'name' => 'Schloss Schönbrunn',
    'description' => 'Schloss Schönbrunn, die ehemalige Sommerresidenz der Kaiserfamilie, zählt zu den schönsten Barockanlagen Europas.',
    'created_at' => '2012-01-10 01:06:48',
    'coordinates' => '48.201187:16.334213, 48.200665:16.331606, 48.202989:16.331091, 48.203075:16.334192',
    'media' => 'image:http://farm5.staticflickr.com/4069/4679448909_1264ea4668_b.jpg,video:http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4',
  ),
)
 array (
      0 => array (
        'id' => '3',
        'name' => 'Stadthalle',
        'description' => 'Die Wiener Stadthalle',
        'created_at' => '2012-01-07 14:22:06',
        'coordinates' => array(
            array('48.201187:16.334213'),
            array('48.200665:16.331606'),
            array('48.202989:16.331091'),
            array('48.203075:16.334192')
        ),
        'media' => 'image:http://farm5.staticflickr.com/4069/4679448909_1264ea4668_b.jpg,video:http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4',
      ),
      1 => array (
        'id' => '4',
        'name' => 'Schloss Schönbrunn',
        'description' => 'Schloss Schönbrunn, die ehemalige Sommerresidenz der Kaiserfamilie, zählt zu den schönsten Barockanlagen Europas.',
        'created_at' => '2012-01-10 01:06:48',
        'coordinates' => array(
            array('48.201187:16.334213'),
            array('48.200665:16.331606'),
            array('48.202989:16.331091'),
            array('48.203075:16.334192')
        ),
        'media' => 'image:http://farm5.staticflickr.com/4069/4679448909_1264ea4668_b.jpg,video:http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4',
      ),
    )
看起来很简单:

foreach($array as &$item) {
    $item['coordinates'] = explode(', ', $item['coordinates']);
}

这实际上并不完全符合您显示的内容,但您可以将其更改为

$item['coordinates'] = array_map(function($el) { return array($el); },
                                 explode(', ', $item['coordinates']));

如果这是您真正想要的。

我假设您使用mysql,但不幸的是,mysql没有数组的概念。也许你可以使用postgres,因为我相信它可以处理数组。但这个问题似乎是重复的:

您还应该尝试从以下数据中获取:
Schloss SchÃnbrunn
到以下数据:
Schloss Schönbrunn
。这将是JSON输出,而不是PHP输出,解码后将显示“Schönbrunn”。这非常有效,谢谢,我只需切换第2行和第3行。你能告诉我“&”是干什么用的吗?或者给我一个我可以搜索的关键词。谢谢哎呀,你说得对。政府;字符告诉PHP传递对数组中项目的引用,这样当我们在第3行和第5行中对其进行更新时,它会将该更新带回原始数组。谷歌“参考传递”。哦,天哪,这就是我失败的地方。然后我尝试将其存储到$temp变量中,并使用array_push重新创建数组。非常感谢你!
foreach ($outerArray as $key => &$value) {
    $coords = explode(',', $value['coordinates']);
    $value['coordinates'] = array();
    foreach ($coords as $coordPair) {
        $value['coordinates'][] = explode(':', $coordPair);
    }
}