2017-06-13 102 views
-1

我有一個關聯數組是這樣的:PHP獲取鍵值對了,從一個新的陣列內的陣列(陣列過濾,陣列減少)

[1] => Array 
     (
      [logo] => 
      [starting] => 
      [prelim_info] => 
      [state_entry] => 1 
      [district_entry] => 3 
      [CLIx_code] => 1009 
      [survey_time] => 2017-05-29 09:38:00.0 
      [Implement_module] => 
      [CLIxModule_Impl] => 1 
      [Noimplement_reason] => 
      [Other_Reason] => 
      [implementedModule_Name] => 7 10 11 12 
      [Lab_Open] => 3 
      [Lab_Management] => 1 
      [Planned_CLIxPeriods] => 2 
      [ReasonsCancellation_CLIxClass] => 5 
      [PowerCut_Visit] => 2 
      [Observe_session:Session_observe] => 2 
      [Observe_session:grade_observe] => 
      [Observe_session:grade_other] => 
      [Observe_session:Module_Observed] => 
      [Observe_session:Unit_Observed] => 
      [Observe_session:Lesson_Observed] => 
      [Observe_session:time_Sufficient] => 
      [Observe_session:Student_workindependent] => 
      [Observe_session:groupsinteracting] => 
      [Observe_session:groupshelping] => 
      [Observe_session:Students_Mothertongue] => 
      [Observe_session:Students_handbook] => 
      [Observe_session:Students_reflections] => 
      [Observe_session:teacherpresent] => 
      [Observe_session:encourage_platform] => 
      [Observe_session:encourage_classdisc] => 
      [Observe_session:mothertongue_teacher] => 
      [Observe_session:teacher_handbook] => 
      [Observe_session:Teacher_prepared] => 
      [TPDcertification_support1:TPD_Cert_Subject1] => 
      [TPDcertification_support1:tchrSupport_TPD1] => 
      [TPDcertification_support1:Source_Support] => 
      [TPDcertification_support2:TPD_Cert_Subject2] => 
      [TPDcertification_support2:tchrSupport_TPD2] => 
      [TPDcertification_support2:Source_Support] => 
      [TPDcertification_support3:TPD_Cert_Subject] => 
      [TPDcertification_support3:tchrSupport_TPD3] => 
      [TPDcertification_support3:Source_Support] => 
      [TPDcertification_support4:TPD_Cert_Subject] => 
      [TPDcertification_support4:tchrSupport_TPD4] => 
      [TPDcertification_support4:Source_Support] => 
      [teacher_feedback] => Regarding the old modules, maths teachers said that it was very useful as well as workbook. 
      [FSP_feedback] => NA 
      [TPDsuppport_certification:Supt_TPDcertification] => 1 
      [TPDsuppport_certification:Source_Supportcertification] => 4 
      [teacherSupport_moduleImplement] => They had training organised by the clix team and RMSA. 
      [HighPoint] => NA 
      [LowPoint] => There was no clix class since school reopen. 
      [schlcontact_FSP_nooftimes] => 0 
      [FT_contactreason] => 5 
      [FT_otherreason] => 
      [Support_fromTE] => 2 
      [Action_FT] => 1 
      [Specific_ActionFT] => School lab need to recheck for start rolling out the modules. 
      [Action_CLIxTeam] => 2 
      [Sepecific_ActionCLIx] => 
      [Action_State] => 1 
      [Specific_ActionState] => To issue the class period include in their regular time table. 
      [Action_TPD] => 2 
      [Specific_ActionTPD] => 
      [Session_observe2:Module_Second] => 
      [Session_observe2:Observe_grade] => 
      [Session_observe2:other_grade] => 
      [Session_observe2:Observation_Module2] => 
      [Session_observe2:Observation_Unit2] => 
      [Session_observe2:Observation_Lesson2] => 
      [Session_observe2:time_Sufficient2] => 
      [Session_observe2:Student_workindependent2] => 
      [Session_observe2:groupsinteracting2] => 
      [Session_observe2:groupshelping2] => 
      [Session_observe2:Students_Mothertongue2] => 
      [Session_observe2:Students_handbook2] => 
      [Session_observe2:Students_reflections2] => 
      [Session_observe2:teacherpresent2] => 
      [Session_observe2:encourage_platform2] => 
      [Session_observe2:encourage_classdisc2] => 
      [Session_observe2:mothertongue_teacher2] => 
      [Session_observe2:teacher_handbook2] => 
      [Session_observe2:Teacher_prepared2] => 
      [teacher_feedback2] => 
      [FSP_feedback2] => 
      [TPD_certification:tcher_TPD] => 
      [TPD_certification:certification_course_tchr_suport] => 
      [teachersupport_moduleImplement2] => 
      [school_location:Latitude] => 23.7428370300 
      [school_location:Longitude] => 92.7227306900 
      [school_location:Altitude] => 1014.0000000000 
      [school_location:Accuracy] => 18.0000000000 
      [generated_note_name_110] => 
      [meta:instanceID] => uuid:2568400e-0ec3-421d-94bc-10653732e6d2 
     ) 

我想從這個數組中的一些鍵值對數據分析和可視化。輸出應該是這個樣子: -

array(
    [CLIx_code] => 1009 
    [state_entry] => 1 
    [district_entry] => 3 
    ... 
) 

基本上,我想用過濾一些鍵值對上,我可以運行一些數學函數和這些信息傳遞給D3.js數據可視化的陣列。

我試着這樣說:

for ($i=0;$i<count($all_rows);$i++){ 
    $filteredarray[] = array($all_rows[$i]['CLIx_code'], $all_rows[$i]['state_entry'], $all_rows[$i]['district_entry']);  
}` 

但我想鍵值對,不僅我即使使用array_filter()嘗試的價值。

+0

這是非常基本的。你試過什麼了? –

+1

我們如何幫助您?爲你寫代碼? –

+0

你只是想刪除沒有數字作爲值的數組元素?或者是什麼?顯示你的編碼嘗試! – mickmackusa

回答

0

我必須假設你知道元素的鍵名,你想要保留和運行計算,所以array_intersect_key()是適合這項工作的工具。

碼(Demo):

$array=[ 
    'logo'=>'', 
    'starting'=>'', 
    'prelim_info'=>'', 
    'state_entry'=>1, 
    'district_entry'=>3, 
    'CLIx_code'=>1009 
    // ... more elements 
]; 
$filterkeys=[ 
    'state_entry', 
    'district_entry', 
    'CLIx_code' 
    // ... more key names 
]; 
var_export(array_intersect_key($array,array_flip($filterkeys))); 

輸出:

array (
    'state_entry' => 1, 
    'district_entry' => 3, 
    'CLIx_code' => 1009, 
) 

或者,你可以,如果你設置你的$filterkeys鍵名稱作爲關鍵字,這樣降array_flip()電話:

$filterkeys=[ 
    'state_entry'=>'', 
    'district_entry'=>'', 
    'CLIx_code'=>'' 
    // ... more key names 
]; 
var_export(array_intersect_key($array,$filterkeys)); 
-1

PHP: How to use array_filter() to filter array keys?

就指這個問題的答案 像你的情況,你需要編寫一些代碼象下面這樣: -

<?php 
//You have below array including all keys 
$result_array = array('logo'=>'test','state_id'=>125,'prelim_info'=>'','CLIxModule_Impl'=>'5','district_entry'=>3); 

// Now provide only those keys which you need to filter. 
$filter_keys = array('district_entry','state_id'); 

$filtered_array = array_filter($result_array, 
    function ($key) use ($filter_keys) { 
     return in_array($key, $filter_keys); 
    }, 
    ARRAY_FILTER_USE_KEY 
); 
var_dump($filtered_array); 

?>