php - если ключ массива находится в другом значении массива

1

Извините, если этот вопрос сформулирован неправильно или не имеет никакого смысла. То, что я пытаюсь сделать, это написать оператор 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 - это второй массив.

Благодарю.

Теги:
arrays

1 ответ

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(..... внутри, что вам нужно.

Пример/Демонстрация

  • 1
    Именно то, что мне было нужно, спасибо.
  • 1
    Мое удовольствие @arthur
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню