我会尽力解释这一点并保持简短。我正在解析一个JSON文件。我已经根据JSON中的键创建了变量并循环遍历它。我已经有一个array_filter来过滤我想要允许的循环中的值。我不确定的是如何更进一步,做另一个检查,并通过不同的键/变量的值禁止。
在我的JSON中,我有这个键/对象......
"geocode": {
"UGC": [
"TXZ179",
],
现在我为此创建的变量得到这个值就像这样......
$geocode = $currFeature['properties']['geocode']['UGC'][0];
现在,如果您注意到它的值
TXZ179
我只需要来自该值的前两个字母,所以我将它剥离下来,只显示前两个字母......
$state = substr($geocode, 0, -4);
这让我从上面得到TX的值。
我解释说要解释一下。我想取这个$ state变量并过滤掉并省略我的循环中的值=来自该变量的TX。
在我遍历解析的JSON之前,我按照我想要显示的值过滤它...
//Lets filter the response to get only the values we want
$alerts = array(
'Tornado Warning',
'Severe Thunderstorm Warning',
'Hurricane Warning',
'Tropical Storm Warning',
'Flash Flood Warning',
'Flood Warning',
);
// filter features, remove those which are not of any of the desired event types
$alertFeatures = array_filter($features, function(array $feature) use ($alerts) {
$eventType = $feature['properties']['event'];
return in_array($eventType, $alerts);
});
// flip alerts, mapping names of alerts to index in array (we'll use it to order)
$order = array_flip($alerts);
// sort elements by order of event type as desired
usort($alertFeatures, function (array $a, array $b) use ($order) {
$eventTypeA = $a['properties']['event'];
$eventTypeB = $b['properties']['event'];
return $order[$eventTypeA] - $order[$eventTypeB];
});
这个问题必须对过滤器OUT做一些特定值,同时已经存在某个值的现有array_filter以及它们如何共存。
所以我的问题是由于缺乏知识。我不确定使用什么函数或如何禁用$ state变量中的TX值。据我所知,array_filter用于过滤掉你想要保留的值。那么如何在我循环抛出它之前用TX删除值并通过第一个array_filter。
答案 0 :(得分:1)
您可以扩充现有的过滤功能,以便根据地理信息排除功能。
return Observable.throw("Credentials mismatch or not existing")
如果您希望数组项(// this is the TX You don't want
$ignoreState = 'TX';
// filter features, remove those which are not of any of the desired event types
// and also remove those from $ignoreState
$alertFeatures = array_filter($features, function (array $feature) use ($alerts, $ignoreState) {
$eventType = $feature['properties']['event'];
$isValidEvent = in_array($eventType, $alerts);
$geocode = $feature['properties']['geocode']['UGC'][0];
$isValidState = substr($geocode, 0, 2) != $ignoreState;
return $isValidState && $isValidEvent;
});
)位于结果数组中,则filter函数只是一个应该返回true
的函数,如果您想要,则$feature
要从结果数组中排除的数组项。
在您的情况下,如果数组项的事件是列入白名单的事件之一(false
)并且状态代码($alerts
)不是{{},那么您希望数组项位于结果数组中1}}。