Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Поиск в двумерном массиве и вставка значений
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Поиск в двумерном массиве и вставка значений

Страниц (1): [1]
 

1. WhitePlague - 09 Сентября, 2020 - 16:41:33 - перейти к сообщению
Добрый день, уважаемые форумчане.

Помогите, пожалуйста, с одним вопросом:

Есть 2 двумерных массива

  • массив параметров
    PHP:
    скопировать код в буфер обмена
    1.  
    2. $table = array(
    3.     array (
    4.         "ARTICULE" => "2XBL-16",
    5.         "WIDTH" => 1860,
    6.         "HEIGHT" => 1806,
    7.         "DEEP" => 994,
    8.         "WEIGHT" => 118,
    9.     ),
    10.     array (
    11.         "ARTICULE" => "2XBL-15",
    12.         "WIDTH" => 1930,
    13.         "HEIGHT" => 1807,
    14.         "DEEP" => 994,
    15.         "WEIGHT" =>122,
    16.     ),
    17.     array (
    18.         "ARTICULE" => "2XBL-13",
    19.         "WIDTH" => 1920,
    20.         "HEIGHT" => 1800,
    21.         "DEEP" => 994,
    22.         "WEIGHT" =>122,
    23.         ),
    24.     );
    25.  

  • Массив с товарами, в котором необходимо заполнить характеристики
    PHP:
    скопировать код в буфер обмена
    1.  
    2.     $products = array (
    3.         array (
    4.             "NAME" => "Товар такой-то, арт. 2XBL-16",
    5.             "PROPERTY_0" => "",
    6.             "PROPERTY_1" => "",
    7.             "PROPERTY_2" => "",
    8.             "ARTICULE" => "2XBL-16L",
    9.         ),
    10.         array (
    11.             "NAME" => "Товар такой-то, арт. 2XBL-13",
    12.             "PROPERTY_0" => "",
    13.             "PROPERTY_1" => "",
    14.             "PROPERTY_2" => "",
    15.             "ARTICULE" => "2XBL-13R",
    16.         ),
    17.     );
    18.  



  • Вопрос такой, какой алгоритм позволит мне сравнить данные артикула из 1-го массива с NAME или ARTICULE во втором и записать WIDTHxHEIGHTxDEEP в PROPERTY_0?
    2. LIME - 09 Сентября, 2020 - 22:20:09 - перейти к сообщению
    алгоритм nested loop
    3. WhitePlague - 10 Сентября, 2020 - 07:55:58 - перейти к сообщению
    LIME пишет:
    алгоритм nested loop


    Это я понимаю, мне нужна корректная реализация, наверное, это будет как-то так:
    PHP:
    скопировать код в буфер обмена
    1.  
    2. foreach ($table as $key_table1 => $subarray1) {
    3.    foreach ($subarray1 as $key_subarray1 => $value_param_subarray1) {
    4.       foreach ($products as $key_products => $subarray_products) {
    5.          foreach ($subarray_products as $key_subarray2 => $value_param_subarray2) {
    6.              //...корректная реализация поиска
    7.          }  
    8.       }
    9.    }  
    10. }
    11.  


    вопрос, наверное, будет уже такой (не оффтопный) : Как произвести во вложенных форычах корректный поиск по полю ARTICULE и произвести вставку полей из table (высоту, ширину и высоту ) при совпадении (L или R в конце артикулов роли не играют) в одно поле в массиве $products?
    4. Мелкий - 10 Сентября, 2020 - 10:31:10 - перейти к сообщению
    hash join тут уместнее и проще, думается.
    PHP:
    скопировать код в буфер обмена
    1. $hashtable = [];
    2. foreach ($table as $r) {
    3. $hashtable[ $r['ARTICULE'] ] = $r['WIDTH'] * $r['HEIGHT'] * $r['DEEP'];
    4. }

    далее проходите по $products и при isset($hashtable[ $product['ARTICULE'] ]) либо с NAME присваиваете значение.
    5. LIME - 10 Сентября, 2020 - 20:42:10 - перейти к сообщению
    это да, но тогда уж доведем до мержа мб
    WhitePlague массивы отсортированы по артикулу или не факт? можно их получать отсортированными?

     

    Powered by ExBB FM 1.0 RC1