我有这样的数组;
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>';
答案 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>';