2017-02-23 41 views
1

我有一个看起来像这样爆炸的foreach到新阵列

Array 
(
    [sections] => Array 
     (
      [0] => Array 
       (
        [id] => 115000089967 
        [url] => xxxxx 
        [html_url] => ArticleHTML1 
        [category_id] => 204458828 
        [position] => 0 
        [sorting] => manual 
        [created_at] => 2016-12-19T14:56:23Z 
        [updated_at] => 2017-02-03T08:23:04Z 
        [name] => ArticleName1 
        [description] => 
        [outdated] => 
       ) 

      [1] => Array 
       (
        [id] => 207077828 
        [url] => xxxxxx 
        [html_url] => ArticleHTML2 
        [category_id] => 204458828 
        [position] => 1 
        [sorting] => manual 
        [created_at] => 2016-11-14T09:28:30Z 
        [updated_at] => 2017-02-02T09:15:42Z 
        [name] => ArticleName2 
        [description] => 
        [outdated] => 
       ) 
     ) 

    [page] => 1 
    [per_page] => 30 
    [page_count] => 1 
    [sort_by] => position 
    [sort_order] => asc 
) 

我已经成功地用foreach迭代这个JSON API响应,所以回报看起来是这样的:

ArticleName1 ArticleHTML1

ArticleName2文章HTML 2

所以我从每个这样的[姓名]和[html_url]:

$details1 = array('name'); 
$details2 = array('html_url'); 

foreach($sections['sections'] as $article) { 
    foreach($details1 as $detail) { 
    echo "$article[$detail] "; 
    } 
    foreach($details2 as $detail) { 
    echo "$article[$detail]\n"; 
    } 
} 

但我想接下来的是,这种反应应该膨胀到一个单一阵列是这样的:

Array 
(
    [0] => ArticleName1 ArticleHTML1 
    [1] => ArticleName2 ArticleHTML2 
) 

我已经成功地爆炸那些个别阵列:

foreach($sections['sections'] as $article) { 
    foreach($details1 as $detail) { 
    $name = "$article[$detail] "; 
    } 
    foreach($details2 as $detail) { 
    $url = "$article[$detail]\n"; 
    } 
    $string = $name . $url; 
    $array = explode(' ', $string, 1); 
    print_r($array); 
} 

但我只需要一个数组。

怎么样?我迷路了,或者只是不明白,我什至关闭?

编辑

这里的一点是,JSON转储是相当大的,我只需要几件事情(名称和URL)。所以我一直在想,我首先抓住了整个事情,然后我只是拿名字和网址(比如第一个foreach在做),然后把这些放回数组中。因为从这些名字和网址我只需要最后12个键,并从sinlge数组中取出这些将很容易。

如果我能理清我不想要的钥匙,那么这将是完美的。这将解决我的问题。然后,我不需要一个新的阵列等。

+0

我不明白你为什么合并,然后立即爆炸'$ string'?另外你如何使用foreach的方式是非常有缺陷的 - '$ name'和'$ url'只会是最后一个等。 –

+0

是的。这里的事情是JSON转储非常大,我只需要几件事(名称和网址)。所以我在想,我先抓住整件事,然后梳理出我想要的,然后把它们放在一起。 因为从那些我只需要最后12个键。如果我能够首先解决我不想要的钥匙,这将是完美的。这将解决我的问题。然后我不需要一个新的数组。 – Taapsa

回答

6

你让这比它需要更加困难。这只是一个单一的循环:

$array = array(); 
foreach ($sections['sections'] as $article) { 
    $array[] = $article['name'] . ' ' . $article['html_url']; 
} 
+0

这使数组成为一个数组。我只想要一个数组,其中一个值是ArticleName1 ArticleHTML1 – Taapsa

+0

,并且你错过了一个分号:)我已经这样做了,但现在需求是不同的。 我给原始问题增加了一些细节。 – Taapsa

+1

好吧,我已经改变它使用连接,而不是创建一个数组。但是你的代码然后使用'explode()',这会将它变成一个数组。为什么不把它作为一个阵列整个时间? – Barmar