I am trying to use the array_filter to filter for certain values and disallow the rest. I have never used array_filter before so I have been struggling with trying to wrap my heading around this.
Would I need to filter the values first before looping through it and if so how would I filter the array to look for only those values.
This is snippet of currently what I am working with and it is kicking back errors. $alerts is the values I need only to be returned from the array while disallowing the rest. Then I am looping through the filtered results. In my head this seems logical but I am sure I am missing something as it is not working.
$data = file_get_contents($url); // put the contents of the file into a variable
$results = json_decode($data, true); // decode the JSON feed
$alerts = array(Tornado Warning, Severe Thunderstorm Warning, Flash Flood Warning, Flood Warning);
$selected_events = array_filter($results['features'], function($data) {
return $data === $alerts;
});
//Lets loop through the array
foreach($selected_events as $currFeature)
{
$event = $currFeature['properties']['event'];
$wfo = $currFeature['properties']['sender'];
$area = $currFeature['properties']['areaDesc'];
$expires = $currFeature['properties']['expires'];
Here is an example of the JSON I am working with.
{
"@context": [
"https://raw.githubusercontent.com/geojson/geojson-ld/master/contexts/geojson-base.jsonld",
{
"wx": "https://api.weather.gov/ontology#",
"@vocab": "https://api.weather.gov/ontology#"
}
],
"type": "FeatureCollection",
"features": [
{
"id": "https://api.weather.gov/alerts/NWS-IDP-PROD-2485744-2320592",
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
-96.77,
33.84
],
[
-96.76,
33.82
],
[
-96.71,
33.83
],
[
-96.52,
33.82
],
[
-96.5,
33.77
],
[
-96.43,
33.78
],
[
-96.38,
33.73
],
[
-96.39,
33.45
],
[
-96.42,
33.46
],
[
-96.94,
33.54
],
[
-96.94,
33.85
],
[
-96.77,
33.84
]
]
]
},
"properties": {
"@id": "https://api.weather.gov/alerts/NWS-IDP-PROD-2485744-2320592",
"@type": "wx:Alert",
"id": "NWS-IDP-PROD-2485744-2320592",
"areaDesc": "Grayson",
"geocode": {
"UGC": [
"TXC181"
],
"SAME": [
"048181"
]
},
"references": [],
"sent": "2017-08-13T13:18:17+00:00",
"effective": "2017-08-13T13:18:17+00:00",
"onset": "2017-08-13T13:18:00+00:00",
"expires": "2017-08-13T16:15:00+00:00",
"ends": "2017-08-13T16:15:00+00:00",
"status": "Actual",
"messageType": "Alert",
"category": "Met",
"severity": "Severe",
"certainty": "Likely",
"urgency": "Expected",
"event": "Flood Warning",
"sender": "NWS Fort Worth TX",
"headline": "Flood Warning issued August 13 at 8:18AM CDT expiring August 13 at 11:15AM CDT by NWS Fort Worth TX",
"description": "The National Weather Service in Fort Worth has issued a\n\n* Flood Warning for...\nGrayson County in north central Texas...\n\n* Until 1115 AM CDT\n\n* At 816 AM CDT, Emergency management reported flooding of several\nroadways across Grayson County. While the heaviest rainfall has\nended...excessive runoff will continue to result in\nstreams...creeks and some rivers exceeding their banks across the\narea.\n\n* Some locations that will experience flooding include...\nSherman, Denison, Whitesboro, Howe, Pottsboro, Collinsville,\nWhitewright, Bells, Tom Bean, Knollwood, Dorchester, Eisenhower\nState Park, southeastern Lake Texoma, Southmayd, Sadler and Luella.",
"instruction": "A Flood Warning means that flooding is imminent or occurring. Water\nrises will generally be gradual, but flooding of some low water\ncrossings and other low-lying areas near rivers, creeks, and streams\nis expected.",
"response": "Avoid",
"parameters": {
"VTEC": [
"/O.NEW.KFWD.FA.W.0008.170813T1318Z-170813T1615Z/"
],
"EAS-ORG": [
"WXR"
],
"PIL": [
"FWDFLWFWD"
],
"BLOCKCHANNEL": [
"CMAS",
"EAS",
"NWEM"
],
"eventEndingTime": [
"2017-08-13T16:15:00Z"
]
}
}
},