Инструменты пользователя

Инструменты сайта


Боковая панель

Связь

massivy_php

Массивы PHP

Массив - это обычная переменная PHP. Массивы предназначены для сохранения группы элементов в переменной. Каждый элемент массива имеет ключ и значение. Значение может представлять собой другую переменную или массив. Массивы бывают обыкновенные и ассоциативные(иногда говорят "хеш"- массив). Отличаются они только тем, что в обыкновенных массивах ключами служат целые числа (индекс начинается с 0), а в ассоциативных - сочетания различных знаков (т.е. строка).

В массиве с числовой индексацией порядок элементов продиктован его ключами и строго соблюдается, ассоциативный массив часто не гарантирует упорядочение ключей. Элементы добавляются в определенном порядке, но позже этот порядок никоим образом определить нельзя.
PHP умеет сортировать массивы только с уникальными индексами. Если в массиве есть повторяющиеся индексы та же функция ksort отбросит дубликаты и массив на выходе получится меньше.

В PHP можно создавать массивы используя функцию array() или специальный оператор [].

  • Оператор [] означает "добавить в массив". При помощи этого оператора можно как создавать массивы, та и добавлять значения в конец существующего массива. Функция array(), как правило, используется для записи в массив нескольких значений, помещающихся в одной строке. Оператор [] позволяет заносить значения в массив, когда это нужно.
    <?php
    $myarray[ ] = "aaa";
    $myarray[ ] = "bbb";
    $myarray["xkey" ] = "xxx";
    $myarray[ ] = "zzz";
    $size = count($myarray);
    echo $size;
    echo "\nvar_dump:\n";
    var_dump($myarray);
    echo "\n";
    ?>
  • Создание одномерного массива с целочисленными индексами. Самый простой способ создания одномерного массива с целочисленными индексами.
    <?php
    $myarray = array("aaa", "bbb","zzz");
    
    $size = count($myarray);
    echo "\nprint_r:\n";
    //print_r($myarray);
    $output = print_r($myarray, true);
    echo $output;
    echo "\nvar_dump:\n";
    var_dump($myarray);
    echo "\nvar_export:\n";
    var_export($myarray);
    echo "\n";
    ?>

    Вывод скрипта с использованием функций print_r, var_dump, var_export:

    print_r:
    Array
    (
        [0] => aaa
        [1] => bbb
        [2] => zzz
    )
    
    var_dump:
    array(3) {
      [0]=>
      string(3) "aaa"
      [1]=>
      string(3) "bbb"
      [2]=>
      string(3) "zzz"
    }
    
    var_export:
    array (
      0 => 'aaa',
      1 => 'bbb',
      2 => 'zzz',
    )
  • Создание одномерного ассоциативного массива. Используется сивол "⇒"
    $fruits = array('red' => 'Apples', 'yellow' => 'Bananas', 'beige' => 'Cantaloupes', 'brown' => 'Dates');

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

  • Создание многомерного массива.
    $fruits = array('red' => array('strawberry','apple'), 'yellow' => array('banana'));
  • Удаление нежелательных ключей в массиве
    <?php
            $a = array("A"=>1, "B"=>2, "C"=>"a");
    
            foreach($a as $key=>&$value){
                if(is_string($value)){
                  unset($a[$key]);
                }
             }
            print_r($a);
    ?>
    unset($arr[5]); // Это удаляет элемент из массива
    
    unset($arr);    // Это удаляет массив полностью

Сортировка массивов

  • uasort — Сортирует массив, используя пользовательскую функцию для сравнения элементов с сохранением ключей. mod_status - скрипт сортирующей по IP клиента
  • sort. Сортировка массивов. Функция sort располагает элементы массива в порядке возрастания. Рассмотрим пример различия сортировки одного и того же массива для числового порядка (SORT_NUMERIC) и строковом представлении (SORT_STRING):
    <?php
    $scores = array(1, 18,17, 10, 2, 20);
    sort($scores, SORT_NUMERIC);
    print_r($scores);
    
    $scores = array(1,18,17, 10, 2, 20);
    sort($scores, SORT_STRING);
    print_r($scores);
    ?>
    
    Array
    (
        [0] => 1
        [1] => 2
        [2] => 10
        [3] => 17
        [4] => 18
        [5] => 20
    )
    Array
    (
        [0] => 1
        [1] => 10
        [2] => 17
        [3] => 18
        [4] => 2
        [5] => 20
    )
Функция sort не сохраняет связи ключ/значение между элементами; вместо этого она реиндексирует элементы, начиная с 0 по возрастанию. arsort сортирует массив в обратном порядке, сохраняя ключи

Поиск в многомерном массиве

  • Поиск в многомерном массиве, по третьему ключу каждого вложенного массива. Например, найти 'foo':
    <?PHP
    $mass=array(array('0','0','bad'),array('0','0','foo'));
    for($n=0;$n!=sizeof($mass);$n++){
    if($mass[$n][2]=='foo'){
    echo '$mass['.$n.'][2]=foo<br>';
    }
    }
    ?>

    или

    $mass=array(array('0','0','bad'),array('0','0','foo'),array('0','0','foo'));
    foreach($mass as $d){
    if(in_array('foo',$d)){
    echo 's';
    }
    }
massivy_php.txt · Последние изменения: 2015/03/17 15:39 (внешнее изменение)