【问题标题】:How do I search for a group of array values and return the array keys for those values?如何搜索一组数组值并返回这些值的数组键?
【发布时间】:2018-01-13 16:39:46
【问题描述】:

我有一个包含两层键的数组:

$array[0][0] = 5;
$array[0][1] = 115;
$array[0][2] = 320;
$array[1][0] = 5;
$array[1][1] = 100;
$array[1][2] = 115;

我怎样才能返回数组键(两者),基于它们具有相同的值。例如,我希望能够返回 [0][0] 和 [1][0],因为它们具有相同的值 5,然后分别返回 [0][1] 和 [1][2],因为它们具有相同的值 115?我正在尝试使用 array_keys 函数,但无法真正弄清楚。

【问题讨论】:

    标签: php arrays sorting


    【解决方案1】:

    你可以这样做:

    $array[0][0] = 5;
    $array[0][1] = 115;
    $array[0][2] = 320;
    $array[1][0] = 5;
    $array[1][1] = 100;
    $array[1][2] = 115;
    
    //Orginize the array
    $tempValues = array();
    foreach ( $array as $key1 => $value1 ) {
        foreach ( $value1 as $key2 => $value2 ) {
            if ( !isset( $tempValues[ $value2 ] ) ) $tempValues[ $value2 ] = array();
            $tempValues[ $value2 ][] = array( $key1, $key2 );
        }
    }
    
    //Check which has 2/more
    $duplicateValues = array();
    foreach ( $tempValues as $key => $tempValue ) {
        if ( count( $tempValue ) >= 2 ) $duplicateValues[ $key ] = $tempValue;
    }
    
    echo "<pre>";
    print_r( $duplicateValues );
    echo "</pre>";
    

    这将导致:

    Array
    (
        [5] => Array
            (
                [0] => Array
                    (
                        [0] => 0
                        [1] => 0
                    )
    
                [1] => Array
                    (
                        [0] => 1
                        [1] => 0
                    )
    
            )
    
        [115] => Array
            (
                [0] => Array
                    (
                        [0] => 0
                        [1] => 1
                    )
    
                [1] => Array
                    (
                        [0] => 1
                        [1] => 2
                    )
    
            )
    
    )
    

    有两对

    5 - [0][0] and [1][0]
    115 - [0][1] and [1][2]
    

    【讨论】:

      猜你喜欢
      • 2012-01-15
      • 2023-03-06
      • 2015-08-27
      • 2023-04-09
      • 1970-01-01
      • 2015-03-31
      • 1970-01-01
      • 2013-08-29
      • 2013-02-19
      相关资源
      最近更新 更多