За последние 24 часа нас посетили 64098 программистов и 1742 робота. Сейчас ищут 845 программистов ...

Пара вопросов про массивы

Тема в разделе "PHP для новичков", создана пользователем skillful, 23 мар 2011.

  1. skillful

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

    С нами с:
    30 ноя 2010
    Сообщения:
    73
    Симпатии:
    0
    Здравствуйте! Есть массив

    PHP:
    1. $b = array('act' => 'undefined', 'ses_limit' => '15', 'boxchecked' => '0', 'ses_admin' => '1');
    2. ?> <pre> <?php print_r ($b); ?> </pre> <?php
    Который выводит
    HTML:
    1. Array
    2. (
    3.     [act] => undefined
    4.     [ses_limit] => 15
    5.     [boxchecked] => 0
    6.     [ses_admin] => 1
    7. )
    8.  
    Что нужно добавить, чтоб в массиве обрезались лишние ключи в которых не содержиться ses_,
    т.е. получалось так
    HTML:
    1. Array
    2. (
    3.     [ses_limit] => 15
    4.     [ses_admin] => 1
    5. )
     
  2. Invision

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

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    эм.. не записывать эти ключи в массив? ;D
    А вообще юзай unset типо

    PHP:
    1. unset($b[2]);
    2. unset($b[4]);
     
  3. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    PHP:
    1. <?php
    2.  
    3. $b = array('act' => 'undefined', 'ses_limit' => '15', 'boxchecked' => '0', 'ses_admin' => '1');
    4. $o = array();
    5.  
    6. foreach($b as $key=>$value){
    7.   if(strpos($key, 'ses_') !== false) $o[$key] = $value;
    8. }
    9.  
    10. echo '<pre>'.print_r($o, true).'</pre>';
     
  4. Invision

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

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    если всего 2 значения убрать то заюзать

    PHP:
    1. unset($b['ses_limit']);
    2. unset($b['ses_admin']);
    хотя лучше слушай гуру ;D
     
  5. skillful

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

    С нами с:
    30 ноя 2010
    Сообщения:
    73
    Симпатии:
    0
    ага! Спасибо. И еще вопрос. В БД содержатся данные в виде serialize($_POST); обрезанные
    PHP:
    1. <?php foreach($b as $key=>$value){
    2.    if(strpos($key, 'ses_') !== false) $o[$key] = $value;
    3.  }
    4.  
    5. a:3:{s:3:"ses_act";s:9:"undefined";s:10:"ses_boxchecked";s:1:"0";}
    6.  
    Как сделать сравнение, т.е. сравнить массив из БД с массивом _POST

    PHP:
    1.  <?php $_POST['ses_limit'] = '20';
    2. $POST_in = (isset($_POST)) ? $_POST : array();
    и чтоб в случае отсутствия в БД допустим параметра ses_limit который присутствует в _POST он добавлялся в массив который будет записан в БД. Надеюсь понятно объяснил )
     
  6. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    http://php.net/manual/en/function.array-merge.html
     
  7. skillful

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

    С нами с:
    30 ноя 2010
    Сообщения:
    73
    Симпатии:
    0
    Gromo Спасибо получилось! Еще вопрос )

    В массиве у меня глобальная переменная $_POST, т.е. код такой

    PHP:
    1.  <?php
    2. $p = array();
    3. foreach($_POST as $key=>$value)
    4. {
    5.     if(strpos($key, 'ses_') !== false)
    6.          $p[$key] = $value;
    7. }
    8.  
    9. echo '<pre>'.print_r($p, true).'</pre>';
    Как насчет безобастности переменной _POST, не надо ли ее какнить защитить?
     
  8. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    а чего в ней опасного-то ?

    защищать нужно данные, поступающие в базу, либо отображаемые пользователю
     
  9. skillful

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

    С нами с:
    30 ноя 2010
    Сообщения:
    73
    Симпатии:
    0
    т.е. можно спокойно оставить этот код?
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    skillful
    сам ответить на этот вопрос должен ты, юный падован

    скажи нам что видишь в этом коде, и истина придет к тебе