Итак, я предполагаю, что у вас есть массив с тремя массивами: из штатов, округов и почтовых индексов.Я также предполагаю, что ваш массив, содержащий эти массивы, называется $data
, поэтому подставьте туда имя вашего массива.
Я считаю, что ваш исходный массив настроен следующим образом.
$data = array(
'state' => array
(
'WA',
'CA',
'CA',
'NV',
'MO',
'CA',
'CA',
'CA',
'CT',
'FL',
'FL',
'ID',
'ID',
'IN',
'MN',
'MN',
'NE',
'NY',
'TX',
'TX',
'WI'
),
'counties' => array
(
'King, Snohomish',
'Contra Costa',
'Los Angeles',
'Clark',
'Jackson',
'Tulare',
'Sacramento',
'Riverside',
'New Haven',
'Pinellas',
'Lake',
'Canyon',
'Ada',
'Tippecanoe, White, Carroll',
'Crow Wing, Cass',
'Blue Earth',
'Douglas',
'Rockland',
'Webb',
'Harris',
'Waukesha, Milwaukee, Washington'
),
'zipcodes' => array
(
'98004, 98005, 98006, 98007, 98008, 98011, 98012, 98102, 98105, 98112, 98136, 98025, 98033, 98034, 98083',
'94530, 94804, 94805, 94803, 94806, 94564, 94547',
'91381, 91384, 91354, 91355, 91321, 91387, 91351, 91390, 91350',
'89002, 89009, 89011, 89012, 89014, 89015, 89016, 89128, 89048, 89052, 89053, 89060, 89061, 89074, 94588, 89102, 89105, 89108, 89109, 89111, 89112',
'64055, 64056, 64057, 64052, 64064, 64050, 64058, 64014, 64015, 64029, 64063, 64081, 64082, 64086, 64133',
'','','','','','','','','','','','','','','',''
));
ИтакВот мое решение:
//make our own array with state, counties, and zips living together.
$sortData=array();
foreach($data['state'] as $key =>$thisState){
//first sort the zipcode string itself.
$zipcodeArray = explode(", ",$data['zipcodes'][$key]);
sort($zipcodeArray,SORT_NUMERIC);
$zipcodeString = implode(", ",$zipcodeArray);
$pusharray=array('state'=>$thisState,'county'=>$data['counties'][$key],'zipcode'=>$zipcodeString);
array_push($sortData,$pusharray);
}//foreach
$states=array();
$counties=array();
$zipcodes=array();
foreach ($sortData as $key => $row) {
$states[$key] = $row['state'];
$counties[$key] = $row['county'];
$zipcodes[$key] = $row['zipcode'];
}//
$index=0;
array_multisort($zipcodes, SORT_NUMERIC, SORT_ASC, $states, SORT_ASC, $counties, SORT_ASC, $sortData);
function blank($var)
{
if (empty($var['zipcode'])){return true;}else{return false;}
}
function zipcodeString($var)
{
if (!(empty($var['zipcode']))){return true;}else{return false;}
}
$noZipcodeChunk=(array_filter($sortData, "blank"));
$zipcodeChunk=(array_filter($sortData, "zipcodeString"));
$finalArray = array_merge($zipcodeChunk,$noZipcodeChunk);
foreach ($finalArray as $datum){
echo $datum['state'].' '.$datum['county'].' '.$datum['zipcode'].'<br>';
}
И я думаю, что это то, что вы ищете:
MO Jackson 64014, 64015, 64029, 64050, 64052, 64055, 64056, 64057, 64058, 64063, 64064, 64081, 64082, 64086, 64133
NV Clark 89002, 89009, 89011, 89012, 89014, 89015, 89016, 89048, 89052, 89053, 89060, 89061, 89074, 89102, 89105, 89108, 89109, 89111, 89112, 89128, 94588
CA Los Angeles 91321, 91350, 91351, 91354, 91355, 91381, 91384, 91387, 91390
CA Contra Costa 94530, 94547, 94564, 94803, 94804, 94805, 94806
WA King, Snohomish 98004, 98005, 98006, 98007, 98008, 98011, 98012, 98025, 98033, 98034, 98083, 98102, 98105, 98112, 98136
CA Riverside
CA Sacramento
CA Tulare
CT New Haven
FL Lake
FL Pinellas
ID Ada
ID Canyon
IN Tippecanoe, White, Carroll
MN Blue Earth
MN Crow Wing, Cass
NE Douglas
NY Rockland
TX Harris
TX Webb
WI Waukesha, Milwaukee, Washington