数组与重复键组合

时间:2017-12-04 14:51:57

标签: php arrays

简介

我一直在使用数组,我意识到PHP不会返回重复键。

我正在使用一个保存用户基本信息的系统,当我查询它时,我得到一个这种格式的对象:

stdClass Object
(
    [columnList] => Array
        (
            [0] => UID
            [1] => PIN
        )

    [data] => Array
    (
        [0] => Array
            (
                [0] => 123456789
                [1] => SOME_RANDOM_USER_PIN
            )
    )
)

现在,我创建了一个简单的函数来过滤并返回key=>value对:

private function handle_obj( $array )
{
    // if it's an object we treat it as such
    if ( is_object( $array ) )
    {
        // reduce array->data to simpler format
        $call_data = array_reduce( $array->data, 'array_merge', [] );
        // trim array values
        $call_data = array_map ( 'trim', $call_data );

        // count each array and make sure they have the same number
        if ( count($array->columnList) == count( $call_data ) )
        {
            // combine both arrays
            $combine = array_combine ( $array->columnList, $call_data );
        }
        else
        {
            if ( count($array->data) > 0 )
            {
                foreach( $array->data as $column => $data )
                {
                    $combine[] = array_combine( $array->columnList, $data );
                }
            }
            else
            {
                $combine = $array;
            }
        }

    }
}

结果是:

$combine == array(
    'UID' => '123456789',
    'PIN' => 'SOME_RANDOM_USER_PIN'
);

问题

我目前遇到的问题是,UID列出了plaintext两次,第一次列在[118] => ����̅C�~J�U�V���;Z,o��l�L:�D�1�XO�%+⚃u���%V\�^b� 3���ԧ 中,但第二次是以加密字符串形式出现的。

stdClass Object
(
    [columnList] => Array
        (
            [0] => UID
            [1] => PIN
            [2] => UID
        )

    [data] => Array
    (
        [0] => Array
            (
                [0] => 123456789
                [1] => SOME_RANDOM_USER_PIN
                [2] => ����̅C�~J�U�V���;Z,o��l�L:�D�1�XO�%+⚃u���%V\�^b� 3���ԧ
            )
    )
)

对象看起来像这样:

handle_obj

函数{{1}}然后会跳过第一行,只返回第二行。

现在,我不关心加密字段,我只想要明文附带的第一个字段。

我正在试图找出如何修改我只需要一个通用脚本的代码,无论项目的顺序如何回到我身边,我都不想只选择一个特定的行因为这也发生在其他领域。

我需要一种方法来比较两个数组项并选择未加密的项。

0 个答案:

没有答案