PHP. Поиск данной по двумерном массиве

106
21 февраля 2021, 23:20

у меня есть такой массив(как показано на картинке) Мне нужно находить данную по product_id

я пробывал сделать var_dump(array_search('55117',(array)$purchaseWizardTemp->getData()));

но мне возвращает false. будто он не видит его.

Как правильно написать код, чтобы он искал данную в двумерном массиве. Цыкл я пытаюсь избежать. Слишком долго!

Answer 1

Скорее всего должно быть так:

$key = array_search('55117', array_column($purchaseWizardTemp->getData(), 'product_id'));

array_column - Возвращает массив из значений одного столбца входного массива. То есть по указанному имени ключа находит значения. Ну а потом на основе них ищет уже в исходном массиве

Заметка: любые встроенные функции (array_search, array_column, array_map, array_filter и прочие) под капотом используют цикл. По-другому просто невозможно сделать операции над массивом.

Answer 2

Ну вы бы ускорили процесс если бы прочитали Вот это

Плюс у вас "product_id" не совпадает с предложенным.

$array = [
    0 => [
        "id" => "1",
        "product_id" => "54117"
    ],
    1 => [
        "id" => "2",
        "product_id" => "53041"
    ]
];
foreach ($array as $arr){
    var_dump(array_search('54117', $arr));
}
Answer 3
$arr=array(array("id"=>"2563", "product_id"=>"54117", "group_id"=>"2130","ргice"=>"112.18", "cost"=>"0","qty"=>"1","sold"=>"1","shortdesc"=>"Serial Number: К62АТ93285SТ Model: МН22160ВН Part Number:СА07018-В38400РМ Firmware: 0РРОЗО-00430009 Date: МАК 20О9 Product of: Тhailand!РСВ Revision: СА26344-В33104ВА","brand_template"=>"Fujitsu","model"=>"МН22160ВН 62","pn_hddcode_2ndmodel"=>"СА07018-В38400РМ","mlc_fw_sitecode_dcm"=>"","spec_3"=>"","spec_4"=>"","уеаг"=>"0","flg"=>"0"), array("id"=>"25630", "product_id"=>"541187", "group_id"=>"21030","ргice"=>"112.180", "cost"=>"01","qty"=>"13","sold"=>"14","shortdesc"=>"Serial Number: К62АТ93285SТ Model: МН22160ВН Part Number:СА07018-В38400РМ Firmware: 0РРОЗО-00430009 Date: МАК 20О9 Product of: Тhailand!РСВ Revision: СА26344-В33104ВА","brand_template"=>"Fujitsu","model"=>"МН22160ВН 62","pn_hddcode_2ndmodel"=>"СА07018-В38400РМ","mlc_fw_sitecode_dcm"=>"","spec_3"=>"","spec_4"=>"","уеаг"=>"1","flg"=>"1"));
$chery=count($arr);
for($i = 0; $i <= $chery-1; $i++) {
if (array_key_exists('product_id', $arr[$i])) {
    if($arr[$i]['product_id']=='54117'){
        echo 'Найдено';
    }
}
}
READ ALSO
Сделать блок кликабельным через сss

Сделать блок кликабельным через сss

Есть код при наведении на объект появляется полеКак сделать так что бы поле появлялось при клике и не исчезало пока не кликнешь второй раз

155
Создать внешний ключ

Создать внешний ключ

Не понимаю в чём может быть проблемаЕсть две таблицы

146
Как создать MockMultipartFile в нужной директории?

Как создать MockMultipartFile в нужной директории?

Для тестирования контроллеров использую

148