2017-06-13 103 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); 

?>