За последние 24 часа нас посетили 16866 программистов и 1641 робот. Сейчас ищет 981 программист ...

ф-я compact

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

  1. vikrorpert

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

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    объясните на пальцах как она работает? в гугле одни переводы мануала с непонятным примером
     
  2. Alex_pac

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

    С нами с:
    11 апр 2011
    Сообщения:
    285
    Симпатии:
    1
    Адрес:
    Россия, Тольятти
    compact
    Упаковывает в массив переменные из текущего контекста.

    Синтаксис :
    PHP:
    1. array compact(mixed varname1 [, mixed $varname2, ...])
    Функция compact() упаковывает в массив переменные из текущего контекста (глобального или контекста функции), заданные своими именами в varname1, $varname2 и т.д. При этом в массиве образуются пары с ключами, равными содержимому varnameN, и значениями соответствующих переменных.
    Число аргументов может быть неопределенное.
    Если в аргументе указано имя несуществующей переменной, он пропускается. Действие этой функции противоположно функции extract().
    PHP:
    1. <?php
    2. $a="Test string";
    3. $b="Some text";
    4. $A=compact("a","b");
    5. // теперь $A===array("a"=>"Test string", "b"=>"Some text")
    Почему же тогда параметры функции обозначены как mixed? Дело в том, что они могут быть не только строками, но и списками строк. В этом случае функция последнего перебирает все элементы этого списка, и упаковывает те переменные из текущего контекста, имена которых она встретила. Более того - эти списки могут, в свою очередь, также содержать списки строк, и т.д. Правда, последнее используется достаточно редко.
    PHP:
    1. <?php
    2. $a="Test";
    3. $b="Text";
    4. $c="CCC";
    5. $d="DDD";
    6. $List=array("b",array("c","d"));
    7. $A=compact("a",$List);
    8. // теперь $A===array("a"=>"Test", "b"=>"Text",  "c"=>"CCC", "d"=>"DDD")
     
  3. vikrorpert

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

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    спасибо прояснилось