获取json数组响应并存储在另一个数组中

时间:2016-10-12 12:25:04

标签: php arrays json curl laravel-4

我有cURL函数,它根据我提供的ID调用api并返回数组中的数据。到目前为止一切都很完美。我想要的,也无法弄明白的是:

我有foreach在表中显示所有命令谎言

@foreach($orders as $order)

   $order->address
   $order->time_created
   $order->price
    ... etc

@endforeach

是否可以将此cURL放在foreach中并根据$order->order_id添加每行以显示数组中的更多数据?

这样的事情

@foreach($orders as $order)

   $order->address
   $order->time_created
   $order->price
    ... etc

   $url = get_curl_content_tx("http://example.com/".$order->order_id);
   $data = json_decode($url,true);

   @foreach ( $data as $moreData )
       @if ( $moreData['data'] == $order->time_created )

         // show something
       @else
         // show other thing
       @endif
   @endforeach
@endforeach

我的问题是我无法弄清楚如何循环网址以便我可以得到所有orders_id,即

$url = get_curl_content_tx("http://example.com/1");
$url = get_curl_content_tx("http://example.com/2");
$url = get_curl_content_tx("http://example.com/3");
$url = get_curl_content_tx("http://example.com/4");
$url = get_curl_content_tx("http://example.com/5");
$url = get_curl_content_tx("http://example.com/6");

然后我可以执行if/else块。我使用的框架是Laravel 4.2。

希望我想要完成的事情已经足够清楚了。如果不是,我会尝试清除事情..

编辑:示例应该是什么:

<table>
    <thead>
        <tr>
            <th class="text-center">#</th>
            <th class="text-center">Date Created</th>
            <th class="text-center">Name</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <th>1</th>
            <th>$url = get_curl_content_tx("http://example.com/1")</th> 
            <th>Product 1</th>
        </tr>
        <tr>
            <th>2</th>
            <th>$url = get_curl_content_tx("http://example.com/2")</th> 
            <th>Product 2</th>
        </tr>       
    </tbody>
</table>

2 个答案:

答案 0 :(得分:1)

您可以使用laravel的unique方法进行收藏,以便在迭代前删除重复的订单ID。

$collection = collect([
    ['name' => 'iPhone 6', 'brand' => 'Apple', 'type' => 'phone'],
    ['name' => 'iPhone 5', 'brand' => 'Apple', 'type' => 'phone'],
    ['name' => 'Apple Watch', 'brand' => 'Apple', 'type' => 'watch'],
    ['name' => 'Galaxy S6', 'brand' => 'Samsung', 'type' => 'phone'],
    ['name' => 'Galaxy Gear', 'brand' => 'Samsung', 'type' => 'watch'],
]);

$unique = $collection->unique('brand');

$unique->values()->all();

或者您也可以使用PHP方法。 How to remove duplicate values from a multi-dimensional array in PHP

答案 1 :(得分:0)

我已设法做到并将其作为答案发布。因为我已经拥有该产品的ID,所以我直接在刀片中做到了这一点。也许有改进的余地,但现在至少它正在发挥作用。

这是在条件

时没有回声的短版本
public class ObservableSortedSet<T> : SortedSet<T>, INotifyPropertyChanged, INotifyCollectionChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    public event NotifyCollectionChangedEventHandler CollectionChanged;

    public void NotifyPropertyChanged(string propName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propName));
    }

    public void AddAndNotify(T element)
    {
        Add(element);
        CollectionChanged?.Invoke(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add));
    }

    public void RemoveAndNotify(T element)
    {
        Remove(element);
        CollectionChanged?.Invoke(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove));
    }
}