Анимация
JavaScript
|
Главная Библионтека array count values() подсчитывает частоту появления значений в списке $List. Вот пример: $List=array(1, "hello", 1, "world", "hello"); array count values($array); возвращает array(1=>2, "hello"=>2, "world"=>1) Комплексная замена в строке В предыдущей главе мы рассматривали функцию strtr() , которая заменяла в строке одни буквы на другие, и функцию str replace() , осуществляющую контекстный поиск и замену. В свете ассоциативных массивов эти две функции объединяются в одну, также называющуюся strtr() , но несущую в себе возможности str replace() . string strtr(string $st, array $Substitutes) Эта функция (заметьте - с двумя параметрами, а не с тремя, как обгчная strtr()!) берет строку $st и проводит в ней контекстный поиск и замену: ищутся подстроки - ключи в массиве $Substitutes - и замещаются на соответствующие им значения. Таким образом, теперь мы можем выполнить несколько замен сразу, не используя str replace() в цикле: $Subs=array( "<name>" => "Larry", "<time>" => date("d.m.Y") $st="Привет, <name>! Сейчас <time>"; echo strtr($st,$Subs); А вот как можно "отменить" действие функции HtmlSpecialChars() : $Trans=array flip(get html translation table()); $st=strtr($st, $Trans); В результате мы из строки, в которой все спецсимволы заменены на их HTML-эквиваленты, получим исходную строку во всей ее первозданной красе. Функции get html translation table() не уделено много внимания в этой книге. Она возвращает таблицу преобразований, которая применяется при вызове HtmlSpecialChars() . Примечание Функция strtr() начинает поиск с самой длинной подстроки и не проходит по одному и тому же ключу дважды. Получение части массива array array slice(array $Arr, int $offset [, int $len]) Эта функция возвращает часть массива ассоциативного массива, начиная с пары ключ=>значения со смещением (номером) $offset от начала и длиной $len (если последний параметр не задан, до конца массива). Параметры $offset и $len задаются по точно таким же правилам, как и аналогичные параметры в функции substr() . А именно, они могут быть отрицательными (в этом случае отсчет осуществляется от конца массива), и т. д. Вот несколько примеров из документации PHP: $input = array ("a", "b", "c", "d", "e"); $output = array slice ($input, 2); "c", "d", "e" $output = array slice ($input, 2, -1); "c", "d" $output = array slice ($input, -2, 1); "d" $output = array slice ($input, 0, 3); "a", "b", "c" Вставка/удаление элементов Мы уже знаем несколько операторов, которые отвечают за вставку и удаление элементов. Например, оператор [] (пустые квадратные скобки) добавляет элемент в ко- Слияние массивов array array merge(array $A1, array $A2, ... ) Функция array merge() призвана устранить все недостатки, присущие оператору + для слияния массивов. А именно, она сливает массивы, перечисленные в ее аргументах, в один большой массив и возвращает результат. Если в массивах встречаются одинаковые ключи, в результат помещается пара ключ=>значение из того массива, который расположен правее в списке аргументов. Однако это не затрагивает числовые ключи: элементы с такими ключами помещаются в конец результирующего массива в любом случае. Таким образом, с помощью array merge() мы можем избавиться от всех недостатков оператора + для массивов. Вот пример, сливающий два списка в один: $L1=array(10,20,30); $L2=array(100,200,300); $L=array merge($L1,$L2); теперь $L===array(10,20,30,100,200,300); Всегда используйте эту функцию, если вам нужно работать именно со списками, а не с обычными ассоциативными массивами. нец массива, присваивая ему числовой ключ, а оператор Unset() вместе с извлечением по ключу удаляет нужный элемент. Язык PHP версии 4 поддерживает и многие другие функции, которые иногда бывает удобно использовать. int array push(alist &$Arr, mixed $var1 [, mixed $var2, Эта функция добавляет к списку $Arr элементы $var1, $var2 и т. д. Она присваивает им числовые индексы - точно так же, как это происходит для стандарных [] . Если вам нужно добавить всего один элемент, наверное, проще и будет воспользоваться этим оператором: array push($Arr,1000); выз1ваем функцию. $Arr[]=100; то же самое, но короче Обратите внимание, что функция array push() воспринимает массив, как стек, и добавляет элементы всегда в его конец. Она возвращает новое число элементов в массиве. mixed array pop(list &$Arr) Функция array pop() , а противоположность array push() , снимает элемент с " вершины" стека (то есть берет последний элемент списка) и возвращает его, удалив после этого его из $Arr. С помощью этой функции мы можем строить конструкции, напоминающие стек. Если список $Arr был пуст, функция возвращает пустую строку. int array unshift(list &$Arr, mixed $var1 [, mixed $var2, Функция очень похожа на array push() , но добавляет перечисленные элементы не в конец, а в начало массива. При этом порядок следования $var1, $var2 и т. д. остается тем же, т. е. элементы как бы "вдвигаются" в список слева. Новым элементам списка, как обычно, назначаются числовые индексы, начиная с 0; при этом все ключи старых элементов массива, которые также были числовыми, изменяются (чаще всего они увеличиваются на число вставляемых значений). Функция возвращает новый размер массива. Вот пример ее применения: $A=array(10,"a"=>20,30); array unshift($A,"!","?"); теперь $A===array(0=>"!", 1=>"?", 2=>10, a=>20, 3=>30) mixed array shift(list &$Arr) Эта функция извлекает первый элемент массива $Arr и возвращает его. Она сильно напоминает array pop() , но только получает начальный, а не конечный элемент, а также производит довольно сильную "встряску" всего массива: ведь при извлечении первого элемента приходится корректировать все числовые индексы у всех оставшихся элементов array array unique(array $Arr) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 [ 76 ] 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 |