【问题标题】:PHP reorder keys in array by templatePHP按模板重新排序数组中的键
【发布时间】:2015-10-29 16:35:39
【问题描述】:

我有这样的数组:

$array = array(
            array(
                'Date' => '2015-10-23',
                'Week Day' => 'Friday',
                'Hour' => 'asdads',
                'Intoduction' => 'adsasdasdasd​',
                'Call Status' => 'asdadad:',
                'Call status options' => 'asdadsad',
                'Question 1' => 'asdadads',
                'Answer 1' => 'Psdado',
                'Question 2' => 'asdadadsasd',
                'Answer 2' => 'aasdadasdads',
                'Telephone 1' => 'asdadsadsqd',
                'Status tel 1' => 'asdasdad'
        ),
            array(
                'Date' => '2015-10-23',
                'Week Day' => 'Friday',
                'Hour' => 'asdads',
                'Intoduction' => 'asdadadsasdad',
                'Call Status' => "asdadsasdasd",
                'Call status options' => 'Busy',
                'Telephone 1' => 'asdadsasd',
                'Status tel 1' => 'sdasdasdad',
                'Question 1' => '',
                'Answer 1' => '',
                'Question 2' =>'',
                'Answer 2' =>''
            ) ...
);

随后的其他数组,键是混合的,但它们都具有相同的键。 我想以相同的顺序对所有数组键进行排序, 示例默认为 $array[0],下一个 $array[1],$array[2], ... 所有的键都按 $array[0] 的顺序排列。

如果输入是从顶部开始的数组,结果应该是:

$array = array(
    array(
        'Date' => '2015-10-23',
        'Week Day' => 'Friday',
        'Hour' => 'asdads',
        'Intoduction' => 'adsasdasdasd​',
        'Call Status' => 'asdadad:',
        'Call status options' => 'asdadsad',
        'Question 1' => 'asdadads',
        'Answer 1' => 'Psdado',
        'Question 2' => 'asdadadsasd',
        'Answer 2' => 'aasdadasdads',
        'Telephone 1' => 'asdadsadsqd',
        'Status tel 1' => 'asdasdad'
    ),
    array(
        'Date' => '2015-10-23',
        'Week Day' => 'Friday',
        'Hour' => 'asdads',
        'Intoduction' => 'asdadadsasdad',
        'Call Status' => "asdadsasdasd",
        'Call status options' => 'Busy',
        'Question 1' => '',
        'Answer 1' => '',
        'Question 2' =>'',
        'Answer 2' =>'',
        **'Telephone 1' => 'asdadsasd',
        'Status tel 1' => 'sdasdasdad'**
    )
);

【问题讨论】:

    标签: php arrays sorting key


    【解决方案1】:

    我认为你可以使用这样的东西:

    $array = array(
        array(
            'Date' => '2015-10-23',
            'Week Day' => 'Friday',
            'Hour' => 'asdads',
            'Intoduction' => 'adsasdasdasd​',
            'Call Status' => 'asdadad:',
            'Call status options' => 'asdadsad',
            'Question 1' => 'asdadads',
            'Answer 1' => 'Psdado',
            'Question 2' => 'asdadadsasd',
            'Answer 2' => 'aasdadasdads',
            'Telephone 1' => 'asdadsadsqd',
            'Status tel 1' => 'asdasdad'
        ),
        array(
            'Date' => '2015-10-25',
            'Week Day' => 'Monday',
            'Hour' => 'asdads',
            'Intoduction' => 'adsf',
            'Call Status' => "hgfv",
            'Call status options' => 'Hi',
            'Telephone 1' => 'nbvnb',
            'Status tel 1' => 'klasdfjdfjf',
            'Question 1' => '',
            'Answer 1' => '',
            'Question 2' =>'',
            'Answer 2' =>'5'
        )
    );
    
    $temp = array();
    $keys = $array[0];
    $sorted_keys = array();
    
    foreach($keys as $key => $value) { //Choose the desired order depending on the first element keys
        $sorted_keys[] = $key;
    }
    
    foreach($array as $key => $value) { //For every element in the data array
        foreach($sorted_keys as $s_key => $s_value) { //Select to input the right key on the right place
            $temp[$key][$s_value] = $value[$s_value];
        }
    }
    
    var_dump($temp);
    

    结果:

    array (size=2)
      0 => 
        array (size=12)
          'Date' => string '2015-10-23' (length=10)
          'Week Day' => string 'Friday' (length=6)
          'Hour' => string 'asdads' (length=6)
          'Intoduction' => string 'adsasdasdasd​' (length=15)
          'Call Status' => string 'asdadad:' (length=8)
          'Call status options' => string 'asdadsad' (length=8)
          'Question 1' => string 'asdadads' (length=8)
          'Answer 1' => string 'Psdado' (length=6)
          'Question 2' => string 'asdadadsasd' (length=11)
          'Answer 2' => string 'aasdadasdads' (length=12)
          'Telephone 1' => string 'asdadsadsqd' (length=11)
          'Status tel 1' => string 'asdasdad' (length=8)
      1 => 
        array (size=12)
          'Date' => string '2015-10-25' (length=10)
          'Week Day' => string 'Monday' (length=6)
          'Hour' => string 'asdads' (length=6)
          'Intoduction' => string 'adsf' (length=4)
          'Call Status' => string 'hgfv' (length=4)
          'Call status options' => string 'Hi' (length=2)
          'Question 1' => string '' (length=0)
          'Answer 1' => string '' (length=0)
          'Question 2' => string '' (length=0)
          'Answer 2' => string '5' (length=1)
          'Telephone 1' => string 'nbvnb' (length=5)
          'Status tel 1' => string 'klasdfjdfjf' (length=11)
    

    【讨论】:

    • 太棒了!很高兴能帮到你。
    猜你喜欢
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多