【问题标题】:Get every other value of array in PHP在 PHP 中获取数组的所有其他值
【发布时间】:2015-08-25 12:17:40
【问题描述】:

我有一个数组:

Array ( [A] => 4 [B] => 4 [D] => 4 [E] => 8 [F] => 4 [G] => 8 [H] => 8 [J] => 12 [K] => 12 [L] => 11 [M] => 11 [O] => 10 [P] => 10 [Q] => 10 [R] => 10 )

它有更多的值,但我过滤掉了零值,因为我不需要它们。

现在我需要其他所有值,以便得到:

Array ( [A] => 4 [D] => 4 [F] => 4 [H] => 8 [K] => 12 [M] => 11 [P] => 10 [R] => 10 )

我还需要保留完整的键的数组

Array ( [B] => 4 [E] => 8 [G] => 8 [J] => 12 [L] => 11 [O] => 10 [Q] => 10 )

我怎么可能做到这一点?

数组的长度可能会发生变化。零值也可以改变。

【问题讨论】:

    标签: php arrays for-loop filter


    【解决方案1】:

    试试

    $arr = Array ( 'A' => 4, 'B' => 4, 'D' => 4, 'E' => 8, 'F' => 4, 'G' => 8, 'H' => 8, 'J' => 12, 'K' => 12, 'L' => 11, 'M' => 11, 'O' => 10, 'P' => 10, 'Q' => 10, 'R' => 10 );
    
    $arr1 = array();
    $arr2 = array();
    
    $i = 0;
    foreach($arr as $key => $value){
        if($i%2 == 0){
            $arr1[$key] = $value;
        }else{
            $arr2[$key] = $value;
        }
        $i++;
    }
    

    使用array_walk函数

    $current = 0;
    
    array_walk($arr,function($v,$k) use(&$result,&$current){
                   if($current%2 == 0) {
                       $result['even'][$k] = $v;
                   }else{
                       $result['odd'][$k] = $v;
                   }
                   $current++;
               });
    print_r($result);
    

    Fiddle

    Fiddle(array_walk)

    【讨论】:

    • 好吧...这很容易。我正在寻找功能,但找不到任何功能。也尝试做这样的事情,但这太简单了!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    相关资源
    最近更新 更多