2014-04-03 109 views
1

我是個複雜的關聯數組從jotform控件提交的數據 - 當我運行的print_r工作($ _ POST)我得到以下數據檢索數據從PHP

Array ( 
[formID] => 40923773875567 
[q1_clickTo] => Country: UNITED STATES 
Province: Kentucky 
Latitude: 37.568694 
Longitude: -84.29632229999999 
[website] => [simple_spc] => 40923773875567-40923773875567 
) 

我需要在檢索國家的幫助,省,緯度,經度和網站[simple_spc]數據

請幫助 - 謝謝

+0

有什麼問題,使用索引像$訪問[ '網站'] [ 'simple_spc']? –

回答

0

訪問他們以這種方式..

echo $_POST['q1_clickTo']; 
echo $_POST['website']['simple_spc']; 
1

您遇到的問題是您的s1_clickTo中的數據是字符串。我建議以另一種格式獲取數據,因爲現在你必須自己解析它。

我將在新的一行\n(或\r\n取決於實際格式)使用explode(),然後爲每個鍵/值,爆炸上:或使用正則表達式匹配。

0

可能會更好地寫一些解析器,像這樣的閉包?

$a = array(
    'formID' => '40923773875567', 
    'q1_clickTo' => "Country: UNITED STATES 
Province: Kentucky 
Latitude: 37.568694 
Longitude: -84.29632229999999", 
    'website' => array(
     'simple_spc' => '40923773875567-40923773875567' 
    ) 
); 

$trim = function($v) { return trim($v); }; 
$float = function($v) { return (float) $v; }; 

$mapping = array(
    'spc' => array('website', function($v) { return $v['simple_spc']; }), 
    'data' => array('q1_clickTo', function($v) { 
     $data = explode("\n", $v); 
     $result = []; 
     foreach ($data as $line) { 
      $parts = explode(':', $line); 
      $result[$parts[0]] = $parts[1]; 
     } 
     return $result; 
    }), 
    'country' => array('Country', $trim), 
    'longitude' => array('Longitude', $float), 
    'latitude' => array('Latitude', $float), 
    'province' => array('Province', $trim) 
); 

$result = []; 
foreach ($mapping as $key => $value) { 
    $info = $a[$value[0]]; 
    $info = $value[1]($info); 
    if (!is_array($info)) { 
     $result[$key] = $info; 
    } else { 
     foreach ($info as $infoKey => $infoValue) { 
      $a[$infoKey] = $infoValue; 
     } 
    } 
} 
var_export($result); 

工作示例這裏:http://sandbox.onlinephpfunctions.com/code/04f28278bb00b3ca0372d85a837537a2552bc248