За последние 24 часа нас посетили 31979 программистов и 1363 робота. Сейчас ищут 857 программистов ...

как перебрать с помощью foreach многомерный массив и удалить ключи с ненужными значениями

Тема в разделе "PHP для новичков", создана пользователем AlexsaiL, 16 июн 2017.

  1. AlexsaiL

    AlexsaiL Активный пользователь

    С нами с:
    23 дек 2016
    Сообщения:
    327
    Симпатии:
    23
    мне нужно найти [propetyValue] => -
    если [propetyValue] имеет значение дифис(-) то удалить ключ полностью:
    PHP:
    1. [2] => Array
    2.        (
    3.            [propety] => GPRS
    4.            [propetyValue] => -
    5.         )
    как перебирать с помощью forech такую конструкцию:
    PHP:
    1. [id_LINK_TAB_WITH_GR-OF-PROPET] => Array
    2.                 (
    3.                     [0] => Array
    4.                         (
    5.                             [grOfPropet] => Тип устройства
    6.                             [charKeyValue] => Array
    7.                                 (
    8.                                     [0] => Array
    9.                                         (
    10.                                             [propety] => Тип устройства
    11.                                             [propetyValue] => Смартфон
    12.                                         )
    13.                                     [1] => Array
    14.                                         (
    15.                                             [propety] => SIM
    16.                                             [propetyValue] => 2 (1 слот miniSIM; 2 слот microSIM)
    17.                                         )
    18.                                 )
    19.                         )
    20.                     [1] => Array
    21.                         (
    22.                             [grOfPropet] => Стандарты
    23.                             [charKeyValue] => Array
    24.                                 (
    25.                                     [0] => Array
    26.                                         (
    27.                                             [propety] => Стандарты сети 2G (GSM)
    28.                                             [propetyValue] => GSM 850/900/1800/1900MHz
    29.                                         )
    30.                                     [1] => Array
    31.                                         (
    32.                                             [propety] => Стандарты сети 3G (WCDMA)
    33.                                             [propetyValue] => 3G WCDMA 900/2100 МГц
    34.                                         )
    35.                                     [2] => Array
    36.                                         (
    37.                                             [propety] => GPRS
    38.                                             [propetyValue] => -
    39.                                         )
    40.                                     [3] => Array
    41.                                         (
    42.                                             [propety] => Wi-Fi
    43.                                             [propetyValue] => 802.11 b/g/n
    44.                                         )
    45.                                     [4] => Array
    46.                                         (
    47.                                             [propety] => Стандарты сети 4G (LTE)
    48.                                             [propetyValue] => LTE - Bands 1, 3, 7, 20
    49.                                         )
    50.                                 )
    51.                         )
    52. )
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    PHP:
    1. <?php
    2. foreach($arr['id_LINK_TAB_WITH_GR-OF-PROPET'] as &$item) {
    3.     $item = array_filter($item['charKeyValue'], function($a){
    4.         return $a['propetyValue'] != '-';
    5.     });
    6. }
    P.S. Когда выкладываете пример массива на форумах, лучше используйте var_export(), а не print_r()
     
    denis01 нравится это.
  3. AlexsaiL

    AlexsaiL Активный пользователь

    С нами с:
    23 дек 2016
    Сообщения:
    327
    Симпатии:
    23
    спасибо, за помощь, уже решил сам, код:
    PHP:
    1. $ol = "-";
    2.             $arr = array();
    3.        foreach ($row['id_LINK_TAB_WITH_GR-OF-PROPET'] as $key => &$val) {
    4.         if(is_array($val)){
    5.             foreach ($val['charKeyValue'] as $item => &$vall) {
    6.              
    7.                 if($vall['propetyValue'] == $ol){
    8.                     unset($val['charKeyValue'][$item]);
    9.                 }
    10.             }
    11.         }
    12.             if($val['charKeyValue'] == $arr){
    13.                 unset($row['id_LINK_TAB_WITH_GR-OF-PROPET'][$key]);
    14.             }
    15.     }