php - 如果数组键在另一个数组值中

时间:2015-11-12 05:27:11

标签: php arrays

很抱歉,如果这个问题措辞错误或没有任何意义。我要做的是写一个if语句,检查是否:

array(6) {
    [5]=>
    string(17) "Quality Assurance"
    [6]=>
    string(7) "Analyst"
    [7]=>
    string(19) "Developer/Front end"
    [8]=>
    string(18) "Developer/Back end"
    [9]=>
    string(4) "Test"
    [10]=>
    string(2) "hi"
}

任何这些键,在本例中为5,6,7,8,9,10都在:

array(4) {
    [0]=>
    object(stdClass)#195 (2) {
       ["labour_type_id"]=>
       int(5)
       ["required_labour_type_hours"]=>
       int(40)
    }
    [1]=>
    object(stdClass)#193 (2) {
       ["labour_type_id"]=>
       int(6)
       ["required_labour_type_hours"]=>
       int(80)
    }
}

第二个阵列" labour_type_id"。

在这个例子中,5和6匹配。

我正在尝试使用in_array()函数,但我不知道如何访问第二个数组的labour_type_id。

我目前最好的尝试:

        @foreach($labourTypes as $id => $name)
            @if(in_array($id, $reqLabourTypes->labour_type_id))

其中labourTypes是第一个数组,reqLabourTypes是第二个数组。

感谢。

1 个答案:

答案 0 :(得分:1)

我已经清理了这个小搜索,试图按照您的要求找到它:

$new = array_filter(array_map(function(&$item) use($requiredLabour, $labourTypes){

    $key = array_search($item, $labourTypes);
    foreach($requiredLabour as $elem){
        if($elem['labour_type_id'] == $key) {

            return array(
                $key => $item,
                'options' => $elem
            );

        }
    }

}, $labourTypes));

如果找到,$new可以访问所有内容。它返回:

Array
(
    [5] => Array
        (
            [5] => Quality Assurance
            [options] => Array
                (
                    [labour_type_id] => 5
                    [required_labour_hours] => 40
                )

        )

    [6] => Array
        (
            [6] => Analyst
            [options] => Array
                (
                    [labour_type_id] => 6
                    [required_labour_hours] => 40
                )

        )

)

以上只是输出,只需将return array(.....内部编辑为您需要的内容,即可将其更改为您需要的任何内容。

Example/Demo