Вам нужно авторизоваться. Забыли пароль? Регистрация Сентябрь вс. 05 2010 г. в 16:3
Навигация
Поиск
Статистика


Статьи

Функции обработки массивов

Добавлено: 2008-12-07 01:07:12

CLASS="TOC">

Содержание:

array

array_walk

arsort

asort

count

current

each

end

key

ksort

list

next

pos

prev

reset

rsort

sizeof

sort

uasort

uksort

usort

array

CLASS="REFNAMEDIV">array -- Создает массив CLASS="REFSECT1">
Описание
CLASS="FUNCSYNOPSIS">

CLASS="FUNCDEF">array array(...);



Возвращает массив параметров. Параметры могут быть даныпо индексу при использовании опрератора =>.



Помните что CLASS="FUNCTION">array() - это языковая конструкция, и не является регулярным выражением.



Следующий пример демонстрирует как создавать двумерный массив, как определять ключи для ассоциативного массива, и как в пропускать-и-продолжать числовые индексы в нормальном массиве.


Пример 1. array()

CLASS="PROGRAMLISTING">$fruits = array(
"fruits" => array("a"=>"orange","b"=>"banana","c"=>"apple"),
"numbers" => array(1, 2, 3, 4, 5, 6)
"holes" => array("first", 5 => "second", "third")
);




См. также:

CLASS="FUNCTION">list().


array_walk

CLASS="REFNAMEDIV">array_walk -- Применение функции на каждого члена массива.
CLASS="REFSECT1">
Описание
CLASS="FUNCSYNOPSIS">

CLASS="FUNCDEF">int array_walk(array arr, string func);



Применяет функцию с именем CLASS="PARAMETER">func для каждого элемента массива CLASS="PARAMETER">arr. Элементы проходят как первый аргумент функции CLASS="PARAMETER">func; если func требует больше чем один аргумент, будет сгенерировано предупреждение всякий раз, когда
array_walk() вызывает func.
Эти предупреждения могут подавляться добавлением знака '@' при вызове CLASS="FUNCTION">array_walk(), или при использовании error_reporting().



Помните, что CLASS="PARAMETER">func будет работать с елементами массива CLASS="PARAMETER">arr, так что все изменения сделанные над элементами массива будут изменениями для самого массива.



WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE">
CLASS="EXAMPLE">

Пример 1. CLASS="FUNCTION">array_walk()

CLASS="PROGRAMLISTING">$fruits = array("d"=>"lemon","a"=>"orange","b"=>"banana","c"=>"apple");

function test_alter( $item1 ) {
$item1 = 'bogus';
}

function test_print( $item2 ) {
echo "$item2<br> ";
}

array_walk( $fruits, 'test_print' );
array_walk( $fruits, 'test_alter' );
array_walk( $fruits, 'test_print' );




См. также:
CLASS="FUNCTION">each() и
CLASS="FUNCTION">list().


arsort

CLASS="REFNAMEDIV">arsort -- Сортировка массива в обратном порядке и поддерка индексных связей.
CLASS="REFSECT1">
Описание
CLASS="FUNCSYNOPSIS">

CLASS="FUNCDEF">void arsort(array array);




Эта функция сортирует массив так что индексы массива поддерживают их корреляцию с элементами массива с которыми они связываются. Это используется, главным образом, для сортировки ассоциативных массивов, где имеет значение фактический элементный порядок. WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE">
CLASS="EXAMPLE">

Пример 1. CLASS="FUNCTION">arsort()

CLASS="PROGRAMLISTING">$fruits = array("d"=>"lemon","a"=>"orange","b"=>"banana","c"=>"apple");
arsort($fruits);
for(reset($fruits); $key = key($fruits); next($fruits)) {
echo "fruits[$key] = ".$fruits[$key]." ";
}

Пример нам покажет:
CLASS="COMPUTEROUTPUT">fruits[a] = orange
fruits[d] = lemon
fruits[b] = banana
fruits[c] = apple
Фрукты показаны в обратном алфавитном порядке, и поддерживаются связанные с ними индексы.



См. также:
CLASS="FUNCTION">asort(),
CLASS="FUNCTION">rsort(),

CLASS="FUNCTION">ksort(), и
CLASS="FUNCTION">sort().


asort

CLASS="REFNAMEDIV">asort -- Сортирует массив и поддерживает связанные индексыCLASS="REFSECT1">
Описание
CLASS="FUNCSYNOPSIS">

CLASS="FUNCDEF">void asort(array array);



Эта функция сортирует массив так что индексы массива поддерживают их корреляцию с элементами массива с которыми они связываются. Это используется, главным образом, для сортировки ассоциативных массивов, где имеет значение фактический элементный порядок
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE">CLASS="EXAMPLE">

Пример 1. CLASS="FUNCTION">asort()

CLASS="PROGRAMLISTING">$fruits = array("d"=>"lemon","a"=>"orange","b"=>"banana","c"=>"apple");
asort($fruits);
for(reset($fruits); $key = key($fruits); next($fruits)) {
echo "fruits[$key] = ".$fruits[$key]." ";
}
Этот пример покажет:
CLASS="COMPUTEROUTPUT">fruits[c] = apple
fruits[b] = banana
fruits[d] = lemon
fruits[a] = orange
Фрукты показаны в алфавитном порядке, и поддерживаются индексы связанные с каждым элементом массива.



См. также:
CLASS="FUNCTION">arsort(),
CLASS="FUNCTION">rsort(),

CLASS="FUNCTION">ksort(), и
CLASS="FUNCTION">sort().


count

CLASS="REFNAMEDIV">count -- подсчитывает элементы в переменнуюCLASS="REFSECT1">
Описание
CLASS="FUNCSYNOPSIS">

CLASS="FUNCDEF">int count(mixed var);



Возвращает число элементов в CLASS="PARAMETER">var, который является естественно массивом (что либо другое будет иметь один элемент).



возвращает 0 если переменная не укстановлена.



возвражает 1 если переменная не является массивом.



См. также:

CLASS="FUNCTION">sizeof(),
CLASS="FUNCTION">isset(), и

CLASS="FUNCTION">is_array().


current

CLASS="REFNAMEDIV">current -- возвращает текущий элемент массиваCLASS="REFSECT1">
Описание
CLASS="FUNCSYNOPSIS">

CLASS="FUNCDEF">mixed current(array array);




Каждая переменная-массив имеет внутренний указатель, который указывает на один из своих элементов. Кроме того, все элементы в массиве связываются двунаправленным списком указателей для дополнительных целей.
Внутренний указатель указывает на первый элемент, который включался в массив пока Вы не выполняли одну из функций, которые модифицируют этот указатель в этом массиве.



Функция CLASS="FUNCTION">current()просто возвращает элемент массива, на который в данный момент указывает внутренний указатель. Он никак не перемещает указатель. Если внутренний указатель указывает на конец списка элементов,
CLASS="FUNCTION">current() возвращает false(ложно).




CLASS="EMPHASIS">Внимание: если массив содержит пустые элементы (0 или "", пустую строку), то функция возвратит "false" для каждого из них. Это показывает, что текущий элемент является нулевым значением или вы дошли до конца массива. Для того, чтобы правильно просматривать массив, используйте функцию each().



См. также:

CLASS="FUNCTION">end(),
CLASS="FUNCTION">next(),

CLASS="FUNCTION">prev() и
CLASS="FUNCTION">reset().


each

CLASS="REFNAMEDIV">each -- возвращает следующую пару ключ/значение из массиваCLASS="REFSECT1">
Описание
CLASS="FUNCSYNOPSIS">

CLASS="FUNCDEF">array each(array array);



Возвращает следующую пару ключ/значение из массива CLASS="PARAMETER">array и предоставляет курсор массива. Эта пара возвращается в четырех-элементный массив, с ключами 0, 1, key, и
value. Элементы 0 и
key - каждое содержит ключевое имя элемента массива, а CLASS="EMPHASIS">1 и value содержат данные.



WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE">CLASS="EXAMPLE">

Пример 1. each()

CLASS="PROGRAMLISTING">$foo = array( "bob", "fred", "jussi", "jouni" );
$bar = each( $foo );


CLASS="LITERAL">$bar теперь содержит следующие пары ключ/значение:



COMPACT="COMPACT">


  • 0 => 0



  • 1 => 'bob'



  • key => 0



  • value => 'bob'



  • CLASS="PROGRAMLISTING">$foo = array( "Robert" => "Bob", "Seppo" => "Sepi" );
    $bar = each( $foo );




    CLASS="LITERAL">$bar теперь содержит следующие пары ключ/значение:



    COMPACT="COMPACT">


  • 0 => 'Robert'



  • 1 => 'Bob'



  • key => 'Robert'



  • value => 'Bob'








  • CLASS="FUNCTION">each(), как правило, используется вместе с

    CLASS="FUNCTION">list() чтобы просмотреть массив; например,
    $HTTP_POST_VARS:

    WIDTH="100%"
    BORDER="0"
    CELLPADDING="0"
    CELLSPACING="0"
    CLASS="EXAMPLE">CLASS="EXAMPLE">

    Пример 2. Просмотр $HTTP_POST_VARS с помощью each()

    CLASS="PROGRAMLISTING">echo "Values submitted via POST method:<br>";
    while ( list( $key, $val ) = each( $HTTP_POST_VARS ) ) {
    echo "$key => $val<br>";
    }




    См. также
    CLASS="FUNCTION">key(),
    CLASS="FUNCTION">list(),

    CLASS="FUNCTION">current(),
    CLASS="FUNCTION">reset(),

    CLASS="FUNCTION">next(), и
    CLASS="FUNCTION">prev().


    end

    CLASS="REFNAMEDIV">end -- устанавливаете внутренний указатель массива на последнем элементеCLASS="REFSECT1">
    Описание
    CLASS="FUNCSYNOPSIS">

    CLASS="FUNCDEF">end(array array);



    CLASS="FUNCTION">end() перемещает CLASS="PARAMETER">array's
    внутренний указатель на последний элемент массива.



    См. также:

    CLASS="FUNCTION">current(),
    CLASS="FUNCTION">each(), CLASS="FUNCTION">end()

    CLASS="FUNCTION">next() и
    CLASS="FUNCTION">reset()


    key

    CLASS="REFNAMEDIV">key -- выбирает ключ из ассоциативного массиваCLASS="REFSECT1">
    Описание
    CLASS="FUNCSYNOPSIS">

    CLASS="FUNCDEF">mixed key(array array);



    CLASS="FUNCTION">key() Возвращает индекс элемента в текущей позиции массива



    См. также:

    CLASS="FUNCTION">current(),

    CLASS="FUNCTION">next()


    ksort

    CLASS="REFNAMEDIV">ksort -- Сортирует массив по ключам.CLASS="REFSECT1">
    Описание
    CLASS="FUNCSYNOPSIS">

    CLASS="FUNCDEF">int ksort(array array);



    Сортирует массив по ключу, используя ключ для корреляциях данных. Это полезно главным образом для ассоциативного массива.

    WIDTH="100%"
    BORDER="0"
    CELLPADDING="0"
    CELLSPACING="0"
    CLASS="EXAMPLE">CLASS="EXAMPLE">

    Пример 1. CLASS="FUNCTION">ksort()

    CLASS="PROGRAMLISTING">$fruits = array("d"=>"lemon","a"=>"orange","b"=>"banana","c"=>"apple");
    ksort($fruits);
    for(reset($fruits); $key = key($fruits); next($fruits)) {
    echo "fruits[$key] = ".$fruits[$key]." ";
    }
    Этот пример должен показать:
    CLASS="COMPUTEROUTPUT">fruits[a] = orange
    fruits[b] = banana
    fruits[c] = apple
    fruits[d] = lemon



    См. также
    CLASS="FUNCTION">asort(),
    CLASS="FUNCTION">arsort(),

    CLASS="FUNCTION">sort(), и
    CLASS="FUNCTION">rsort().


    list

    CLASS="REFNAMEDIV">list -- Связывает переменные, как если бы они были массивом.
    CLASS="REFSECT1">
    Описание
    CLASS="FUNCSYNOPSIS">

    CLASS="FUNCDEF">void list(...);



    Подобно
    CLASS="FUNCTION">array(), функция list в действительностью является языковой конструкцией а не функцией CLASS="FUNCTION">list() используется для связи списка переменных одной операцией.

    WIDTH="100%"
    BORDER="0"
    CELLPADDING="0"
    CELLSPACING="0"
    CLASS="EXAMPLE">CLASS="EXAMPLE">

    Пример 1. CLASS="FUNCTION">list()

    CLASS="PROGRAMLISTING"><table>
    <tr>
    <th>Employee name</th>
    <th>Salary</th>
    </tr>
    <?php

    $result = mysql($conn, "SELECT id, name, salary FROM employees");
    while (list($id, $name, $salary) = mysql_fetch_row($result)) {
    print(" <tr> ".
    " <td><a href="info.php3?id=$id">$name</a></td> ".
    " <td>$salary</td> ".
    " </tr> ");
    }

    ?></table>



    См. также:

    CLASS="FUNCTION">each(),

    CLASS="FUNCTION">array().


    next

    CLASS="REFNAMEDIV">next -- передвигает внутренний указатель массиваCLASS="REFSECT1">
    Описание
    CLASS="FUNCSYNOPSIS">

    CLASS="FUNCDEF">mixed next(array array);



    Возвращает следующий элемент массива, от текущей позиции внутреннего указателя массива, или "ложь"(false) если нет больше элементов.
    CLASS="EMPHASIS">Внимание: если массив содержит пустые элементы, тогда эта функция возвратит "ложь"(false) и для этих элементов. Чтобы правильно просмотреть массив, который может содержать пустые элементы, смотрите функцию
    CLASS="FUNCTION">each().



    CLASS="FUNCTION">next() ведет себя подобно

    CLASS="FUNCTION">current(), с одной лишь разницей. Он передвигает внутренний указатель массива на один элемент вперед прежде, чем возвратить элемент. Это означает что он возвращает значение следующего элемента и передвигает на него внутренний указатель массива. Если при обращении к следующему элементу обнаружен конец массива - next() возвращает "ложь"(false).



    См. также:

    CLASS="FUNCTION">current(),
    CLASS="FUNCTION">end()

    CLASS="FUNCTION">prev() и
    CLASS="FUNCTION">reset()


    pos

    CLASS="REFNAMEDIV">pos -- Возвращает текущий элемент в массивеCLASS="REFSECT1">
    Описание
    CLASS="FUNCSYNOPSIS">

    CLASS="FUNCDEF">mixed pos(array array);



    Это - псевдоним для
    CLASS="FUNCTION">current().



    См. также:

    CLASS="FUNCTION">end(),
    CLASS="FUNCTION">next(),

    CLASS="FUNCTION">prev() и
    CLASS="FUNCTION">reset().


    prev

    CLASS="REFNAMEDIV">prev -- перемещает внутренний указатель массиваCLASS="REFSECT1">
    Описание
    CLASS="FUNCSYNOPSIS">

    CLASS="FUNCDEF">mixed prev(array array);



    Возвращает предыдущий элемент массива, или "ложь"(false), если перед текущим нет больше элементов. CLASS="EMPHASIS">Внимание: если массив содержит пустые элементы, то функция возвратит "ложь" и на этих элементах. Чтобы правильно просмотреть массив, который может содержать пустые элементы, смотрите функцию
    CLASS="FUNCTION">each().




    CLASS="FUNCTION">prev() ведет себя подобно

    CLASS="FUNCTION">next(), за исключением того что он переводит внутренний указатель массива на одну позицию назад, а не вперед.



    См. также:

    CLASS="FUNCTION">current(),
    CLASS="FUNCTION">end()

    CLASS="FUNCTION">next() и
    CLASS="FUNCTION">reset()


    reset

    CLASS="REFNAMEDIV">reset -- устанавливает внутренний указатель массива в первом элементеCLASS="REFSECT1">
    Описание
    CLASS="FUNCSYNOPSIS">

    CLASS="FUNCDEF">mixed reset(array array);



    CLASS="FUNCTION">reset() возвращает внутренний указатель CLASS="PARAMETER">массива в первый элемент.



    CLASS="FUNCTION">reset() возвращает первыйэлемент массива.



    См. также:

    CLASS="FUNCTION">current(),
    CLASS="FUNCTION">each(),
    CLASS="FUNCTION">next()

    CLASS="FUNCTION">prev() и CLASS="FUNCTION">reset()


    rsort

    CLASS="REFNAMEDIV">rsort -- Сортирует массив в обратном порядкеCLASS="REFSECT1">
    Описание
    CLASS="FUNCSYNOPSIS">

    CLASS="FUNCDEF">void rsort(array array);



    Сортирует массив в обратном порядке (по убыванию).
    WIDTH="100%"
    BORDER="0"
    CELLPADDING="0"
    CELLSPACING="0"
    CLASS="EXAMPLE">CLASS="EXAMPLE">

    Пример 1. CLASS="FUNCTION">rsort()

    CLASS="PROGRAMLISTING"> $fruits = array("lemon","orange","banana","apple");
    rsort($fruits);
    for(reset($fruits); ($key,$value) = each($fruits); ) {
    echo "fruits[$key] = ".$value." ";
    }

    Этот пример покажет:
    CLASS="COMPUTEROUTPUT"> fruits[0] = orange
    fruits[1] = lemon
    fruits[2] = banana
    fruits[3] = apple

    Фрукты отсортированы в обратном алфавитном порядке.



    См. также
    CLASS="FUNCTION">arsort(),
    CLASS="FUNCTION">asort(),

    CLASS="FUNCTION">ksort(),
    CLASS="FUNCTION">sort() и
    CLASS="FUNCTION">usort().


    sizeof

    CLASS="REFNAMEDIV">sizeof -- получает размер массиваCLASS="REFSECT1">
    Описание
    CLASS="FUNCSYNOPSIS">

    CLASS="FUNCDEF">int sizeof(array array);



    Возвращает число элементов списка.



    См. также:

    CLASS="FUNCTION">count()


    sort

    CLASS="REFNAMEDIV">sort -- сортирует массивCLASS="REFSECT1">
    Описание
    CLASS="FUNCSYNOPSIS">

    CLASS="FUNCDEF">void sort(array array);



    Эта функция сортирует масси - все элементы по окончании ее работы будут расположены по возрастанию.
    WIDTH="100%"
    BORDER="0"
    CELLPADDING="0"
    CELLSPACING="0"
    CLASS="EXAMPLE">CLASS="EXAMPLE">

    Пример 1. CLASS="FUNCTION">sort()

    CLASS="PROGRAMLISTING">$fruits = array("lemon","orange","banana","apple");
    sort($fruits);
    for(reset($fruits); $key = key($fruits); next($fruits)) {
    echo "fruits[$key] = ".$fruits[$key]." ";
    }
    Этот пример покажет:
    CLASS="COMPUTEROUTPUT">fruits[0] = apple
    fruits[1] = banana
    fruits[2] = lemon
    fruits[3] = orange
    Фрукты будут отсортированы повозрастанию в алфавитном порядке.



    См. также
    CLASS="FUNCTION">arsort(),
    CLASS="FUNCTION">asort(),

    CLASS="FUNCTION">ksort(),
    CLASS="FUNCTION">rsort(), и
    CLASS="FUNCTION">usort().


    uasort

    CLASS="REFNAMEDIV">uasort -- Сортирует массив с использованием функций сравнения, определенных пользователем и поддержкой индексацииCLASS="REFSECT1">
    Описание
    CLASS="FUNCSYNOPSIS">

    CLASS="FUNCDEF">void uasort(array array, function cmp_function);



    Эта функция сортирует массив так что индексы массива поддерживают их корреляцию с элементами массива с которой они связываются. Т. е. при такой сортировке используются индексы. функции сравнения задает пользователь.


    uksort

    CLASS="REFNAMEDIV">uksort -- Сортирует массив по ключам, с использованием функций сравнения, определенных пользователемCLASS="REFSECT1">
    Описание
    CLASS="FUNCSYNOPSIS">

    CLASS="FUNCDEF">void uksort(array array, function cmp_function);



    Эта функция отсортирует ключи массива используя функции сравнения, определенные пользователем. Если массив, который Вы хотите отсортировать, должен сортироваться некоторыми не-тривиальными критериями, Вы должны использовать эту функцию.
    WIDTH="100%"
    BORDER="0"
    CELLPADDING="0"
    CELLSPACING="0"
    CLASS="EXAMPLE">CLASS="EXAMPLE">

    Пример 1. CLASS="FUNCTION">uksort()

    CLASS="PROGRAMLISTING">function mycompare($a, $b) {
    if ($a == $b) return 0;
    return ($a > $b) ? -1 : 1;
    }
    $a = array(4 => "four", 3 => "three", 20 => "twenty", 10 => "ten");
    uksort($a, mycompare);
    while(list($key, $value) = each($a)) {
    echo "$key: $value ";
    }
    Пример покажет:
    CLASS="COMPUTEROUTPUT">20: twenty
    10: ten
    4: four
    3: three



    См. также
    CLASS="FUNCTION">arsort(),
    CLASS="FUNCTION">asort(),
    CLASS="FUNCTION">uasort(),

    CLASS="FUNCTION">ksort(),
    CLASS="FUNCTION">rsort() и
    CLASS="FUNCTION">sort().


    usort

    CLASS="REFNAMEDIV">usort -- сортирует массив по значениям используя используя функции сравнения, определенные пользователемCLASS="REFSECT1">
    Описание
    CLASS="FUNCSYNOPSIS">

    CLASS="FUNCDEF">void usort(array array, function cmp_function);



    Эта функция отсортирует массив по значениям используя используя функции сравнения, определенные пользователем. Если массив, который Вы хотите отсортировать должен сортироваться по некоторым не-тривиальным критериям, Вы должны использовать эту функцию.
    WIDTH="100%"
    BORDER="0"
    CELLPADDING="0"
    CELLSPACING="0"
    CLASS="EXAMPLE">CLASS="EXAMPLE">

    Пример 1. CLASS="FUNCTION">usort()

    CLASS="PROGRAMLISTING">function cmp($a,$b) {
    if ($a == $b) return 0;
    return ($a > $b) ? -1 : 1;
    }
    $a = array(3,2,5,6,1);
    usort($a, cmp);
    while(list($key,$value) = each($a)) {
    echo "$key: $value ";
    }
    Пример покажет:
    CLASS="COMPUTEROUTPUT">0: 6
    1: 5
    2: 3
    3: 2
    4: 1
    Очевидно, что в этом тривиальном случае функция
    CLASS="FUNCTION">rsort()
    было бы более соответствующей.



    См. также
    CLASS="FUNCTION">arsort(),
    CLASS="FUNCTION">asort(),

    CLASS="FUNCTION">ksort(),
    CLASS="FUNCTION">rsort() и
    CLASS="FUNCTION">sort().


    Оглавление   |  На верх


     
     
    Тема страницы:

    Руководство по РНР 3.0 Функции обработки массивов Про хостинги и хостеров Статьи

    Статьи
    Руководство по РНР 3.0
    10 статей
    Работает под управлением WebCodePortalSystem v. 5.1

    Страница сгенерирована за 0.125 сек..