具有条件的数组排序

时间:2012-11-15 14:38:33

标签: php arrays

我得到了这个数组:

Array
(
    [0] => Array
        (
            [MONTH] => April
            [logs-count] => 14
            [log_type] => 0
        )

    [1] => Array
        (
            [MONTH] => August
            [logs-count] => 942
            [log_type] => 0
        )

    [2] => Array
        (
            [MONTH] => July
            [logs-count] => 132
            [log_type] => 0
        )

    [3] => Array
        (
            [MONTH] => June
            [logs-count] => 114
            [log_type] => 0
        )

    [4] => Array
        (
            [MONTH] => March
            [logs-count] => 424
            [log_type] => 0
        )

    [5] => Array
        (
            [MONTH] => May
            [logs-count] => 79
            [log_type] => 0
        )

    [6] => Array
        (
            [MONTH] => November
            [logs-count] => 269
            [log_type] => 0
        )

    [7] => Array
        (
            [MONTH] => October
            [logs-count] => 4447
            [log_type] => 0
        )

    [8] => Array
        (
            [MONTH] => October
            [logs-count] => 3
            [log_type] => 1
        )


    [9] => Array
        (
            [MONTH] => September
            [logs-count] => 1003
            [log_type] => 0
        )

)

我想将这些值放到2个数组中:其中:每个月if log_type = 0,转到1个数组和if log_type = 1,转到2个数组,但是如果有来自f的日志(去年11月)并且他的log_type为0转到1个数组,但是第二个转到0)

所以在最后它应该是这样的例子如上:

1个数组

Array
(
    [0] => 14
    [1] => 942
    [2] => 132
    [3] => 114
    [4] => 424
    [5] => 79
    [6] => 272
    [7] => 4447
    [8] => 1003
)

2阵列

Array
(
    [0] => 0
    [1] => 0
    [2] => 0
    [3] => 0
    [4] => 0
    [5] => 0
    [6] => 0
    [7] => 3
    [8] => 0
)

3 个答案:

答案 0 :(得分:1)

$arr0 = [];
$arr1 = [];

foreach ( $arr as $a ) {

    switch ( $a['log_type'] ) {

        case 0:
            $arr0[] = $a['logs-count'];
            break;
        case 1:
            $arr1[] = $a['logs-count'];
            break;
    }

}

这将解决您问题中易于理解的部分。

答案 1 :(得分:0)

您应该使用foreach循环和一些条件语句来对日志条目进行排序:

$array1 = array();
$array2 = array();

foreach ($input_array as $entry) {
  if ($entry['MONTH']=='March' && $entry['log_type']==1) {
    $array1[] = $entry['logs-count'];
  } else if // Etc.
}

根据您的喜好调整条件陈述。

答案 2 :(得分:0)

尝试:

 $arr = array(array('MONTH' => 'April', 'logs-count' => 14,'log_type' => 0),
 array(...),
 ...
    ); //your array
 $arr1 = $arr2 = array();
 foreach($arr as $v) {
 if( $v['log_type'] === 0 ) {
   $arr1[] = $v['logs-count'];
   $arr2[] = 0;
 }
 else if($v['log_type'] === 1) 
   $arr2[] =  $v['logs-count']; 

 }