Как вывести несколько элементов массива php

Содержание
  1. Работа с массивами PHP – создание, наполнение, удаление
  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. Массивы в PHP
  36. Что такое массив
  37. Создание массива
  38. Ключи и значения массива
  39. Простые и ассоциативные массивы
  40. Вывод массива
  41. Добавление и удаление элементов
  42. Двумерные и многомерные массивы
  43. Задача 1
  44. Задача 2
  45. array_slice
  46. Описание
  47. Список параметров
  48. Возвращаемые значения
  49. Примеры
  50. Смотрите также
  51. User Contributed Notes 19 notes

Работа с массивами PHP – создание, наполнение, удаление

Основные примеры работы с массивами PHP. Создание, наполнение, извлечение удаление значений.

Создание массивов

Создать массив и заполнить его значениями

Можно применить функцию array_fill($start, $size, $value) , которая создаст массив с количеством $size элементов со значением $value , начиная с индекса $start .

Данный пример создает массив с тремя элементам «текст», ключи которых будут начинаться с нуля.

Результат:

Еще вариант – функция explode($delimiter, $string) , которая из строки $string создаст массив используя разделитель $delimiter , в данном примере запятая.

Результат:

Узнать количество элементов в массиве

Если массив ассоциативный (многомерный), то count() вернёт количество элементов только первого уровня. Чтобы получит количество всех элементов нужно использовать константу COUNT_RECURSIVE .

Читайте также:  Как отмыть белые штаны от месячных

Добавление элементов в массив

Добавить значение в начало массива

array_unshift($array, $value) – добавляет одно или несколько элементов в начало массива.

Результат:

Добавить значение в конец массива

array_push($array, $value) – добавляет значение в конец массива.

Результат:

Получение данных из массива

Получить первый элемент массива

Получить последний элемент массива

Получить часть (срез) массива

array_slice($array, $offset, $length) возвращает часть массива начиная с индекса $offset длиной $length .

  • Если $offset отрицательный, то отчет начинается с конца массива.
  • $length можно не указывать, тогда функция вернет все элементы до конца массива начиная с индекса $offset .

Результат:

Извлечь первый элемент массива

array_shift($array) – извлекает первый элемент из массива $array и возвращает его значение.

Результат:

Извлечь последний элемент массива

array_pop($array) – извлекает последний элемент из массива $array и возвращает его значение.

Результат:

Извлечь часть массива

Чтобы извлечь из массива часть можно применить функции array_slice() и array_diff() .

Результат:

Выбрать все значения из массива

array_values($array) – создает новый массив из исходного $array игнорируя его ключи.

Результат:

Выбрать все ключи массива

array_keys($array) – создает новый массив состоящий из ключей исходного массива.

Результат:

Выбирать случайные значения из массива

array_rand($array, $count) возвращает случайным образом один или несколько ключей из массива $array . Если $count больше единицы, то результат будет в виде массива.

Поиск и проверка элементов в массиве

Проверить, есть ли значение в массиве

Проверить, есть ли ключ в массиве

Удаление элементов из массива

unset() – удаляет переменные и элементы массива по ключу.

В первом примере элемент удаляется по ключу, во втором по значению:

Результат:

Удаление пустых значений

В PHP нет отдельной функции для удаления пустых значений в массиве, поэтому применяют array_diff() которая возвращает расхождения массивов.

Результат:

Если требуется удалить значения включая 0 , null , array() и т.д. можно применить следующее:

Источник

Массивы в PHP

Что такое массив

Массив — это переменная, которая может содержать в себе сразу несколько значений.

Например, так можно объявить массив с тремя значениями:

В коде выше мы создаём переменную $heroes и добавляем в неё 3 строки.

Массивы также отлично подходят для объединения нескольких связанных между собой значений, например характеристик товара:

Создание массива

Для создания пустого массива просто укажите квадратные скобки вместо значения:

Результат в браузере:

PHP сообщает нам, что в переменной лежит массив (англ. array), в котором находится 0 значений.

Чтобы объявить массив с данными, просто перечислите значения в квадратных скобках:

Теперь в переменной $brands лежит массив, состоящий из трёх элементов.

Создание массивов с помощью квадратных скобок работает начиная с версии PHP 5.4. До этого использовался более громоздкий синтаксис:

Ключи и значения массива

Массив состоит из ключей (индексов) и соответствующих им значений. Это можно представить как таблицу:

Ключ Значение
0 Samsung
1 Apple
2 Nokia

У каждого значения есть свой ключ. В массиве не может быть несколько одинаковых ключей.

Вернёмся к предыдущему примеру и посмотрим, что лежит в массиве:

Результат в браузере:

Когда мы создаём массив без указания ключей, PHP генерирует их автоматически в виде чисел, начиная с 0.

Указание ключей происходит с помощью конструкции => :

Простые и ассоциативные массивы

Когда мы создаём массив с числовыми ключами, такой массив называется простым или числовым.

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

Вывод массива

Вывод элементов массива выглядит следующим образом:

Для вывода содержимого массива можно использовать как уже знакомую нам функцию var_dump() , так и print_r() , которая предоставляет информацию о массивах в чуть более удобном для чтения виде.

Однако обе функции выводят информацию на одной строке, что в случае с массивами превращается в кашу. Чтобы этого не происходило, используйте тег ‘;

Результат в браузере:

Также вывести содержимое массива можно с помощью цикла foreach:

Подробней работу цикла foreach мы разберём в отдельном уроке.

Добавление и удаление элементов

Добавление новых элементов в массив выглядит следующим образом:

Но если название ключа не играет роли, его можно опустить:

Удалить элемент массива можно с помощью функции unset() :

Двумерные и многомерные массивы

В качестве значения массива мы можем передать ещё один массив:

В примере выше мы создали массив $human , а затем внутри него создали ещё один массив $human[‘hands’] . Результат в браузере:

Обратиться к элементу многомерного массива можно так:

Теперь мы можем хранить в одном массиве целую базу товаров:

Или альтернативный вариант:

Задача 1

1. Создайте массивы $user1 и $user2 , заполните ключи name и age в каждом массиве любыми значениями.
2. Увеличьте значение age у обоих массивов на 50%.
3. Выведите на экран значение ключа name обоих пользователей.

Задача 2

1. Создайте массив $city , добавьте в него ключ name с любым значением.

2. Создайте подмассив streets с любыми случайными улицами. Каждая улица должна иметь имя (name) и количество домов (buildings_count), а также подмассив из номеров домов (old_buildings), подлежащих сносу.

Источник

array_slice

(PHP 4, PHP 5, PHP 7, PHP 8)

array_slice — Выбирает срез массива

Описание

array_slice() возвращает последовательность элементов массива array , определённую параметрами offset и length .

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

Если параметр offset неотрицательный, последовательность начнётся на указанном расстоянии от начала array .

Если offset отрицательный, последовательность начнётся с конца array .

Обратите внимание, что параметр offset обозначает положение в массиве, а не ключ.

Если в эту функцию передан положительный параметр length , последовательность будет включать количество элементов меньшее или равное length .

Если количество элементов массива меньше чем параметр length , то только доступные элементы массива будут присутствовать.

Если в эту функцию передан отрицательный параметр length , последовательность остановится на указанном расстоянии от конца массива.

Если он опущен, последовательность будет содержать все элементы с offset до конца массива array .

Обратите внимание, что по умолчанию array_slice() сбрасывает ключи массива. Вы можете переопределить это поведение, установив параметр preserve_keys в true . Строковые ключи сохраняются, независимо от значения этого параметра.

Возвращаемые значения

Возвращает срез. Если смещение больше длины массива, то будет возвращён пустой массив.

Примеры

Пример #1 Пример использования array_slice()

= array( «a» , «b» , «c» , «d» , «e» );

$output = array_slice ( $input , 2 ); // возвращает «c», «d» и «e»
$output = array_slice ( $input , — 2 , 1 ); // возвращает «d»
$output = array_slice ( $input , 0 , 3 ); // возвращает «a», «b» и «c»

// обратите внимание на различия в индексах массивов
print_r ( array_slice ( $input , 2 , — 1 ));
print_r ( array_slice ( $input , 2 , — 1 , true ));
?>

Результат выполнения данного примера:

Пример #2 Пример использования array_slice() с одномерным массивом

Результат выполнения данного примера:

Пример #3 Пример использования array_slice() с массивом из смешанных ключей

Результат выполнения данного примера:

Смотрите также

  • array_chunk() — Разбивает массив на части
  • array_splice() — Удаляет часть массива и заменяет её чем-нибудь ещё
  • unset() — Удаляет переменную

User Contributed Notes 19 notes

Array slice function that works with associative arrays (keys):

function array_slice_assoc($array,$keys) <
return array_intersect_key($array,array_flip($keys));
>

array_slice can be used to remove elements from an array but it’s pretty simple to use a custom function.

One day array_remove() might become part of PHP and will likely be a reserved function name, hence the unobvious choice for this function’s names.

function akrem($array,$key) <
$holding=array();
foreach($array as $k => $v) <
if($key!=$k) <
$holding[$k]=$v;
>
>
return $holding;
>

$lunch = array(‘sandwich’ => ‘cheese’, ‘cookie’=>’oatmeal’,’drink’ => ‘tea’,’fruit’ => ‘apple’);
echo »;
?>

(remove 9’s in email)

Using the varname function referenced from the array_search page, submitted by dcez at land dot ru. I created a multi-dimensional array splice function. It’s usage is like so:

$array[‘admin’] = array(‘blah1’, ‘blah2’);
$array[‘voice’] = array(‘blah3’, ‘blah4’);
array_cut(‘blah4’, $array);

. Would strip blah4 from the array, no matter where the position of it was in the array ^^ Returning this.

Array ( [admin] => Array ( [0] => blah1 [1] => blah2 ) [voice] => Array ( [0] => blah3 ) )

Here is the code.

function varname ( $var )
<
// varname function by dcez at land dot ru
return (isset( $var )) ? array_search ( $var , $GLOBALS ) : false ;
>

function array_cut ( $needle , $haystack )
<
foreach ( $haystack as $k => $v )
<
for ( $i = 0 ; $i count ( $v ); $i ++)
if ( $v [ $i ] === $needle )
<
return array_splice ( $GLOBALS [ varname ( $haystack )][ $k ], $i , 1 );
break; break;
>
>

?>

Check out dreamevilconcept’s forum for more innovative creations!

based on worldclimb’s arem(), here is a recursive array value removal tool that can work with multidimensional arrays.

function remove_from_array($array,$value) <
$clear = true;
$holding=array();

foreach($array as $k => $v) <
if (is_array($v)) <
$holding [$k] = remove_from_array ($v, $value);
>
elseif ($value == $v) <
$clear = false;
>
elseif($value != $v) <
$holding[$k]=$v; // removes an item by combing through the array in order and saving the good stuff
>
>
if ($clear) return $holding; // only pass back the holding array if we didn’t find the value
>

If you want an associative version of this you can do the following:

function array_slice_assoc($array,$keys) <
return array_intersect_key($array,array_flip($keys));
>

However, if you want an inverse associative version of this, just use array_diff_key instead of array_intersect_key.

function array_slice_assoc_inverse($array,$keys) <
return array_diff_key($array,array_flip($keys));
>

Array (
‘name’ = ‘Nathan’,
‘age’ = 20
)

Array (
‘age’ = 20,
‘height’ = 6
)

To save the sort order of a numeric index in the array. Version php =>5.5.26
/*
Example
*/

$arr = array( «1» =>2, «2» =>3 , «3» =>5 );

/**
* Reorders an array by keys according to a list of values.
* @param array $array the array to reorder. Passed by reference
* @param array $list the list to reorder by
* @param boolean $keepRest if set to FALSE, anything not in the $list array will be removed.
* @param boolean $prepend if set to TRUE, will prepend the remaining values instead of appending them
* @author xananax AT yelostudio DOT com
*/
function array_reorder (array & $array ,array $list , $keepRest = TRUE , $prepend = FALSE , $preserveKeys = TRUE ) <
$temp = array();
foreach( $list as $i ) <
if(isset( $array [ $i ])) <
$tempValue = array_slice (
$array ,
array_search ( $i , array_keys ( $array )),
1 ,
$preserveKeys
);
$temp [ $i ] = array_shift ( $tempValue );
unset( $array [ $i ]);
>
>
$array = $keepRest ?
( $prepend ?
$array + $temp
: $temp + $array
)
: $temp ;
>

array_reorder($a,$order,TRUE);
echo »;
/** exemple end **/
?>

If you want to remove a specified entry from an array i made this mwethod.

= array( «Entry1» , «entry2» , «entry3» );

$int = 3 ; //Number of entries in the array
$int2 = 0 ; //Starter array spot. it will begine its search at 0.
$del_num = 1 ; //Represents the second entry in the array. which is the one we will happen to remove this time. i.e. 0 = first entry, 1 = second entry, 2 = third.

$newarray = array(); //Empty array that will be the new array minus the specified entry.
print_r ( $array ) . «
» ; //print original array contents
print_r ( $newarray ). «
» ; //print the new empty array

do
<
$user = $array [ $int2 ];
$key = array_search ( $user , $array );
if ( $key == $del_num )
<

$int2 = $int2 + 1 ;
> while ( $int2 $int );

print_r ( $newarray ). «
» ; //print the new array

I was trying to find a good way to find the previous several and next several results from an array created in a MySQL query. I found that most MySQL solutions to this problem were complex. Here is a simple function that returns the previous and next rows from the array.

/*
** function array_surround by Jamon Holmgren of ClearSight Design
** Version 1.0 — 4/10/2009
** Please direct comments and questions to my first name at symbol clearsightdesign.com
**
** Returns an array with only the $before and $after number of results
** This is set to work best with MySQL data results
** Use this to find the rows immediately before and after a particular row, as many as you want
**
** Example usage:
** $mysql_ar is an array of results from a MySQL query and the current id is $cur_id
** We want to get the row before this one and five rows afterward
**
** $near_rows = array_surround($mysql_ar, «id», $cur_id, 1, 5)
**
** Previous row is now $near_rows[-1]
** Current row is now $near_rows[0]
** Next row is $near_rows[1] . etc
** If there is no previous row, $near_rows[-1] will not be set. test for it with is_array($near_rows[-1])
**
*/
function array_surround ( $src_array , $field , $value , $before = 1 , $after = 1 ) <
if( is_array ( $src_array )) <
// reset all the keys to 0 through whatever in case they aren’t sequential
$new_array = array_values ( $src_array );
// now loop through and find the key in array that matches the criteria in $field and $value
foreach( $new_array as $k => $s ) <
if( $s [ $field ] == $value ) <
// Found the one we wanted
$ck = $k ; // put the key in the $ck (current key)
break;
>
>
if(isset( $ck )) < // Found it!
$result_start = $ck — $before ; // Set the start key
$result_length = $before + 1 + $after ; // Set the number of keys to return
if( $result_start 0 ) < // Oops, start key is before first result
$result_length = $result_length + $result_start ; // Reduce the number of keys to return
$result_start = 0 ; // Set the start key to the first result
>
$result_temp = array_slice ( $new_array , $result_start , $result_length ); // Slice out the results we want
// Now we have an array, but we want array[-$before] to array[$after] not 0 to whatever.
foreach( $result_temp as $rk => $rt ) < // set all the keys to -$before to +$after
$result [ $result_start — $ck + $rk ] = $rt ;
>
return $result ;
> else < // didn't find it!
return false ;
>
> else < // They didn't send an array
return false ;
>
>

?>

I hope you find this useful! I welcome constructive criticism or comments or of course praise 😉 — just e-mail me.

Sometimes you need to pick certain non-integer and/or non-sequential keys out of an array. Consider using the array_pick() implementation below to pull specific keys, in a specific order, out of a source array:

= array ( ‘a’ => 1 , ‘b’ => 2 , ‘c’ => 3 , ‘d’ => 4 );
$b = array_pick ( $a , array ( ‘d’ , ‘b’ ));

// now:
// $a = array (‘a’ => 1, ‘c’ => ‘3’);
// $b = array (‘d’ => 4, ‘b’ => ‘2’);

if (! ( is_array ( $keys ) || is_scalar ( $keys ))) <
trigger_error ( ‘Second parameter must be an array of keys or a scalar key’ , E_USER_ERROR );
return false ;
>

if ( is_array ( $keys )) <
// nothing to do
> else if ( is_scalar ( $keys )) <
$keys = array ( $keys );
>

$resultArray = array ();
foreach ( $keys as $key ) <
if ( is_scalar ( $key )) <
if ( array_key_exists ( $key , $array )) <
$resultArray [ $key ] = $array [ $key ];
unset( $array [ $key ]);
>
> else <
trigger_error ( ‘Supplied key is not scalar’ , E_USER_ERROR );
return false ;
>
>

Источник

Оцените статью