删除大于X的多维数组元素

时间:2018-03-29 16:17:52

标签: php arrays

我有这样的数组;

 Array
(
    [0] => stdClass Object
        (
            [selling] => 4.0107
            [update_date] => 1522271815
        )

    [1] => stdClass Object
        (
            [selling] => 4.0124
            [update_date] => 1522271876
        )

我想只打印元素update_date大于1522271876的卖元素

我只能通过此$datay1 = array_column($results, 'selling');销售元素 但是我怎样才能获得比1522271876更大的卖出元素update_date?

由于

编辑: 我使用了这些代码

$contents = file_get_contents('https://.com/api/v1/currencies/USD/daily'); 
$contents = utf8_encode($contents); 
$results = json_decode($contents, true); 

$filtered_array = array_filter($results, function($obj){
    if (isset($obj->update_date)) {
        if ($obj->update_date > 1522271876) return true;
    }
    return false;
});
print '<pre>';
print_r($filtered_array);
print '</pre>';

2 个答案:

答案 0 :(得分:1)

您可以使用array_filter应用一个过滤数组的回调。

您可以在此处查看文档: http://php.net/manual/en/function.array-filter.php

答案 1 :(得分:0)

你需要使用array_filter()函数尝试这样的事情。我已为您创建了整个对象数组,并将array_filter()条件应用于update_date > 1522271876

<?php
$array = [];
$obj1 = new stdClass;
$obj1->selling = 4.0107;
$obj1->update_date = 1522271815;

$obj2 = new stdClass;
$obj2->selling = 4.0124;
$obj2->update_date = 1522271876;

$obj3 = new stdClass;
$obj3->selling = 4.0129;
$obj3->update_date = 1522271980;
$array = [$obj1,$obj2,$obj3];
print_r($array);
$filtered_array = array_filter($array, function($obj){
    if (isset($obj->update_date)) {
        if ($obj->update_date > 1522271876) return true;
    }
    return false;
});
print '<pre>';
print_r($filtered_array);
print '</pre>';
?>

最初的对象阵列

Array
(
    [0] => stdClass Object
        (
            [selling] => 4.0107
            [update_date] => 1522271815
        )

    [1] => stdClass Object
        (
            [selling] => 4.0124
            [update_date] => 1522271876
        )

    [2] => stdClass Object
        (
            [selling] => 4.0129
            [update_date] => 1522271980
        )

)

过滤后输出:

Array
(
    [2] => stdClass Object
        (
            [selling] => 4.0129
            [update_date] => 1522271980
        )

)

DEMO: https://eval.in/980839

编辑:它只是多维数组,即数组数组,但在你的问题上你放了对象数组,所以现在代码将就像我看到你的API响应一样。所以不要使用 - &gt; ,而是使用 []

$内容的file_get_contents =(&#39; https://doviz.com/ap     I / V1 / CURREN     CIES / USD /每日&#39);     $ results = json_decode($ contents,true);

$filtered_array = array_filter($results, 
function($arr){
if (isset($arr['update_date'])) {
    if ($arr['update_date'] > 1522271876)
     return  true;
}
     return false;
});

print '<pre>';
print_r($filtered_array);
print '</pre>';