- Php вывести массив картинок
- Как вывести на экран массив php со значениями всех его элементов с помощью функции print_r
- Формирование двумерного массива php
- Вывод на экран с помощью функции echo
- Как вывести на экран массив php со значениями всех его элементов с помощью функции print_r
- Как вывести на экран отформатированный массив php со значениями всех его элементов с помощью функции print_r
- Заключение:
- Ассоциативные массивы в PHP с примерами
- Зачем нужны массивы
- Как создать массив в PHP
- Нумерация в массивах
- Ассоциативные массивы в PHP
- Как вывести массив
- Получаем данные из форм через $_GET и $_POST
- Получение данных через $_POST
- Получение данных через $_GET
- Получение массива из базы MySQL
- Разбираем код
- Упражнения с массивами на PHP
- Функции для работы с массивами
- Содержание
- User Contributed Notes 14 notes
Php вывести массив картинок
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel
Секрет
Теперь, когда вы уже наверняка второпях отправили свой запрос,
я расскажу вам простой секрет, который сэкономит вам уйму ожиданий,
даже если первый ответ по теме последуем сразу же.
Само собой я знаю что ответят мне тут же, и если я посмотрю
на сообщения на форуме, то пойму что в общем то я и не ошибаюсь.
Но еще я точно замечу, что очень мало тем, в которых всего два ответа :
вопрос автора и еще два сообщение вида Ответ + Спасибо
После этого приходится начинать уточнять этим неграмотным что мне надо.
Они что, сами читать не умеют? А уточнять приходится.
И иногда пока они переварят то что я им скажу проходит и не одна ночь..
Уверен что если бы я им сказал что у меня есть
фиолетовый квадрат, и нужно превратить его в синий треугольник
и я пытался взять кисточку, макнуть в банку и поводить ей по квадрату
но почему то кисточка не принимала цвет краски в банке,
то на мой вопрос — где взять правильные банки мне бы ответили гораздо быстрее
предложив её открыть, а не тратить еще стольник на жестянку.
Поэтому с тех пор я строю свои вопросы по проверенной давным давно схеме:
Что есть
Что нужно получить
Как я пытался
Почему или что у меня не получилось.
На последок как оно происходит на форумах
Новичок: Подскажите пожалуста самый крепкий сорт дерева! Весь инет перерыл, поиском пользовался!
Старожил: Объясни, зачем тебе понадобилось дерево? Сейчас оно в строительстве практически не используется.
Новичок: Я небоскрёб собираюсь строить. Хочу узнать, из какого дерева делать перекрытия между этажами!
Старожил: Какое дерево? Ты вообще соображаешь, что говоришь?
Новичок: Чем мне нравиться этот форум — из двух ответов ниодного конкретного. Одни вопросы неподелу!
Старожил: Не нравится — тебя здесь никто не держит. Но если ты не соображаешь, что из дерева небоскрёбы не строят, то лучше бы тебе сначала школу закончить.
Новичок: Не знаите — лучше молчите! У меня дедушка в деревянном доме живёт! У НЕГО НИЧЕГО НЕ ЛОМАЕТСЯ.
Но у него дом из сосны, а я понимаю, что для небоскрёба нужно дерево прочнее! Поэтому и спрашиваю. А от вас нормального ответа недождёшся.
Прохожий: Самое крепкое дерево — дуб. Вот тебе технология вымачивания дуба в солёной воде, она придаёт дубу особую прочность:
Новичок: Спасибо, братан! То что нужно.
Отредактировано модератором: Uchkuma, 26 Апреля, 2011 — 10:21:12
Источник
Как вывести на экран массив php со значениями всех его элементов с помощью функции print_r
При написании кода программы на языке программирования PHP часто возникает необходимость вывести на экран значения массива. Существует масса способов решения этой задачи, однако, самым простым вариантом я нахожу использование для этой цели стандартной функции php print_r . В этой статье рассмотрим именно вариант вывода на экран массива php со значениями всех его элементов с помощью этой функции print_r .
Формирование двумерного массива php
Для того, чтобы показать, как вывести на экран массив php со значениями всех его элементов на полностью рабочем примере, сперва сформируем двумерный массив $array 4×4 с такими значениями:
Заполнять массив тоже можно разными способами, но для простоты и наглядности используем два вложенных цикла for :
В общем, массив сформирован. Значения элементов — заглавные буквы латинского алфавита от A до P , а значения ключей по первому индексу — латинские прописные буквы от a до d , по второму — арабские цифры от 1 до 4 .
Вывод на экран с помощью функции echo
Если попробовать вывести теперь получившийся массив с помощью php функции echo так:
То получим ничего для нас не значащую информацию:
Которая указывает, что в данном месте вывода содержится массив, но что это за массив, так и останется для нас загадкой. Такая ситуация довольно часто встречается при разборе чужого кода. В php можно достаточно легко принять массив за переменную, так как синтаксически они в коде могут выглядеть одинаково. Поэтому, получив Array при выводе с помощью функции echo , стоит иметь ввиду, что это не простая переменная, а массив.
И тут мы наконец-то добрались до сути вопроса:
Как вывести на экран массив php со значениями всех его элементов с помощью функции print_r
Для вывода массива на экран вместо функции echo проще всего использовать функцию print_r :
В итоге получим список всех элементов массива с их индексами и значениями:
Но вот печалька: такой вывод в одну строчку сильно затрудняет восприятие того, что же содержится в массиве и о том, какую структуру (размерность) он вообще имеет. Дело в том, что функция print_r выдаёт форматированный вывод в консоль. Если смотреть его в браузере, то форматирование игнорируется браузером и он отдаёт всё в одну строчку.
Как вывести на экран отформатированный массив php со значениями всех его элементов с помощью функции print_r
Для того, чтобы и в браузере получить форматированное отображение массива, как результат его вывода функцией print_r , стоит воспользоваться тегом :
Это наконец даст нужный результат: выведет на экран браузера массив в форматированном, удобном для восприятия и понимания виде:
Заключение:
Именно так просто и без затей можно вывести массив в браузер, используя стандартные возможности php и применив базовые знания HTML.
Ну и напоследок, код работающего скрипта, иллюстрирующего всё изложенное выше:
Надеюсь, что данная информация оказалась полезной и упростила жизнь также, как и мне. 😉
Источник
Ассоциативные массивы в PHP с примерами
Массивы — способ хранить много похожей информации в одном месте.
Массив проще всего представить как много подписанных коробок при переезде. В каждой коробке может лежать что угодно, например, числа, строки, объекты или даже другие коробки.
Зачем нужны массивы
В массивах хранится информация — например, о том, что лежит в каждой коробке. В коробки можно заглянуть, используя индекс элемента — номер коробки.
Каждая коробка — элемент массива, номер под ней — индекс. То, что лежит внутри коробки — значение элемента.
Как создать массив в PHP
Чтобы создать массив в PHP напишем так:
Теперь есть два способа туда что-то добавить. Если мы знаем, на какое место в массиве вставить элемент, используем индекс.
Если мы не знаем конкретные индексы или просто хотим добавить элементы в массив по порядку, нужна такая запись:
Нумерация в массивах
По умолчанию счёт элементов массива идёт от нуля. То есть при обращении к коробкам нужно помнить, что у первой номер ноль, у второй — 1, и так далее.
Здесь у второго элемента массива номер 1, а значение — 2
Но массиву можно задать любую нумерацию. Допустим, мы хотим записать в массив значения степеней двойки.
Этот код создаст массив из трёх элементов, с номерами 2, 4 и 7. Это легко проверить, если запустить его:
Ассоциативные массивы в PHP
Это такие же массивы, только у них индекс не число, а строка. Или что угодно ещё. Неудобно подписывать коробки при переезде по номерам — но если написать «Кухня», «Спальня» или «Гостиная», то сразу будет понятно, где что.
Индекс в таком случае называется ключом — можно представить, что коробка закрыта на замок, а знание ключа поможет её открыть.
Возьмём кухонную коробку, в которой лежат ложки, ножи и тарелки. Можно собрать её двумя способами. Так:
Тогда если нам нужно будет понять, сколько тарелок лежит в коробке, воспользуемся кодом $kitchen[‘Plates’]; .
Как вывести массив
Чтобы вывести всё содержимое ассоциативного массива (в нашем случае, кухонной коробки), воспользуемся циклом foreach , который перебирает все элементы внутри массива.
Ассоциативные массивы можно использовать в вакууме, но мы рассмотрим случаи, когда они используются в настоящих сайтах.
Получаем данные из форм через $_GET и $_POST
Представьте форму обратной связи на сайте — там есть поле для имени, электропочты и для злого письма о том, что ничего не работает. Когда мы передаём информацию из формы в PHP, она попадает в массивы $_GET или $_POST .
$_GET и $_POST — тоже ассоциативные массивы. Ключами в них будут имена переданных данных. Смотрите, как просто.
Получение данных через $_POST
Это форма обратной связи с тремя полями. Обратите внимание на атрибуты name в каждом из полей ввода.
А это код страницы foo.php на PHP, который выведет данные формы, полученные через POST . Здесь мы используем те самые значения атрибутов name , чтобы получить данные из соответствующих полей.
То есть username , email и feedback — ключи, которые не отличаются от атрибута name в форме.
Получение данных через $_GET
Это такая же форма, как выше. Разница в method=»get» — и чуть позже расскажу, в чём ещё.
Код для получения значений формы через $_GET очень похож на прошлый — нужно заменить POST на GET .
Значительная разница в том, что при загрузке страницы с таким кодом, в адресе страницы появятся данные из формы.
С получением данных через GET и POST можно поэкспериментировать в первой главе курса «Знакомство с PHP».
Получение массива из базы MySQL
Ещё один частый случай использования ассоциативных массивов — при загрузке данных из базы данных. И если мы храним большую таблицу в базе, то может быть неудобно назначать столбцам номера. А вот чтобы у каждого элемента ключом стал заголовок — хорошая практика, так и запоминать будет удобнее.
Допустим, у нас есть база данных в MySQL, мы подключаемся к ней, делаем запрос и получаем список пользователей.
Разбираем код
Подключаемся к базе MySQL my_users по адресу localhost , от имени пользователя root , с паролем password .
Запрос — получить номера телефонов всех пользователей из таблицы members .
Делаем запрос к базе с помощью существующей в PHP функции mysqli_query .
Заводим пустой массив для полученных данных.
В этой строчке начинаем построчно считывать результаты.
И если результаты есть, записываем их в ассоциативный массив.
Упражнения с массивами на PHP
У нас есть бесплатный интерактивный курс, где можно без установки PHP, прямо в браузере написать код для реального сайта. И заодно разобраться с массивами, циклами и тем, как работает вся эта магия.
Источник
Функции для работы с массивами
Содержание
User Contributed Notes 14 notes
A simple trick that can help you to guess what diff/intersect or sort function does by name.
[suffix] assoc — additional index check. Compares both value and index.
Example: array_diff_assoc, array_intersect_assoc.
[suffix] key — index only check. Ignores value of array, compares only indexes.
Example: array_diff_key, array_intersect_key.
[suffix] **empty** — no «key» or «assoc» word in suffix. Compares values only. Ignores indexes of array.
Example: array_diff, array_intersect.
[prefix] u — will do comparison with user defined function. Letter u can be used twice in some functions (like array_udiff_uassoc), this means that you have to use 2 functions (one for value, one for index).
Example: array_udiff_uassoc, array_uintersect_assoc.
This also works with array sort functions:
[prefix] a — associative. Will preserve keys.
Example: arsort, asort.
[prefix] k — key sort. Will sort array by keys.
Example: uksort, ksort.
[prefix] r — reverse. Will sort array in reverse order.
Example: rsort, krsort.
[prefix] u — sort by user defined function (same as for diff/intersect).
Example: usort, uasort.
I need to take an element from the Array and change its position within the Array by moving the rest of the elements as required.
This is the function that does it. The first parameter is the working Array. The second is the position of the element to move and the third is the position where to move the element.
The function returns the modified Array.
function array_move_elem ( $array , $from , $to ) <
if ( $from == $to ) < return $array ; >
$c = count ( $array );
if (( $c > $from ) and ( $c > $to )) <
if ( $from $to ) <
$f = $array [ $from ];
for ( $i = $from ; $i $to ; $i ++) <
$array [ $i ] = $array [ $i + 1 ];
>
$array [ $to ] = $f ;
> else <
$f = $array [ $from ];
for ( $i = $from ; $i > $to ; $i —) <
$array [ $i ] = $array [ $i — 1 ];
>
$array [ $to ] = $f ;
>
?>
Examples:
= array( ‘Cero’ , ‘Uno’ , ‘Dos’ , ‘Tres’ , ‘Cuatro’ , ‘Cinco’ , ‘Seis’ , ‘Siete’ , ‘Ocho’ , ‘Nueve’ , ‘Diez’ );
$array = array_move_elem ( $array , 3 , 5 ); // Move element in position 3 to position 5.
print_r ( $array );
$array = array_move_elem ( $array , 5 , 3 ); // Move element in position 5 to position 3, leaving array as it was. 😉
print_r ( $array );
?>
Return:
Array ( [ 0 ] => Cero [ 1 ] => Uno [ 2 ] => Dos [ 3 ] => Cuatro [ 4 ] => Cinco [ 5 ] => Tres [ 6 ] => Seis [ 7 ] => Siete [ 8 ] => Ocho [ 9 ] => Nueve [ 10 ] => Diez )
Array ( [ 0 ] => Cero [ 1 ] => Uno [ 2 ] => Dos [ 3 ] => Tres [ 4 ] => Cuatro [ 5 ] => Cinco [ 6 ] => Seis [ 7 ] => Siete [ 8 ] => Ocho [ 9 ] => Nueve [ 10 ] => Diez )
?>
Updated code of ‘indioeuropeo’ with option to input string-based keys.
FUNCTION:
function array_move_elem ( $array , $from , $to ) <
// return if non-numeric couldn’t be found or from=to
if(! is_numeric ( $from )) <
if( array_search ( $from , array_keys ( $array ))!== FALSE ) <
$from = array_search ( $from , array_keys ( $array ));
>else <
return $array ;
>
>
$array_numeric_keys = array();
foreach( $array as $k => $v ) <
$array_numeric_keys [] = $k ;
>
if ( $from == $to ) < return $array ; >
$c = count ( $array_numeric_keys );
if (( $c > $from ) and ( $c > $to )) <
if ( $from $to ) <
$f = $array_numeric_keys [ $from ];
for ( $i = $from ; $i $to ; $i ++) <
$array_numeric_keys [ $i ] = $array_numeric_keys [ $i + 1 ];
>
$array_numeric_keys [ $to ] = $f ;
> else <
$f = $array_numeric_keys [ $from ];
for ( $i = $from ; $i > $to ; $i —) <
$array_numeric_keys [ $i ] = $array_numeric_keys [ $i — 1 ];
>
$array_numeric_keys [ $to ] = $f ;
>
>
$array_new = array();
foreach( $array_numeric_keys as $v ) <
$array_new [ $v ] = $array [ $v ];
>
return $array_new ;
>
?>
Here is a function to find out the maximum depth of a multidimensional array.
// return depth of given array
// if Array is a string ArrayDepth() will return 0
// usage: int ArrayDepth(array Array)
function ArrayDepth ( $Array , $DepthCount =- 1 , $DepthArray =array()) <
$DepthCount ++;
if ( is_array ( $Array ))
foreach ( $Array as $Key => $Value )
$DepthArray []= ArrayDepth ( $Value , $DepthCount );
else
return $DepthCount ;
foreach( $DepthArray as $Value )
$Depth = $Value > $Depth ? $Value : $Depth ;
return $Depth ;
>
?>
Short function for making a recursive array copy while cloning objects on the way.
function arrayCopy ( array $array ) <
$result = array();
foreach( $array as $key => $val ) <
if( is_array ( $val ) ) <
$result [ $key ] = arrayCopy ( $val );
> elseif ( is_object ( $val ) ) <
$result [ $key ] = clone $val ;
> else <
$result [ $key ] = $val ;
>
>
return $result ;
>
?>
If you need to flattern two-dismensional array with single values assoc subarrays, you could use this function:
function arrayFlatten ( $array ) <
$flattern = array();
foreach ( $array as $key => $value ) <
$new_key = array_keys ( $value );
$flattern [] = $value [ $new_key [ 0 ]];
>
return $flattern ;
>
?>
to 2g4wx3:
i think better way for this is using JSON, if you have such module in your PHP. See json.org.
to convert JS array to JSON string: arr.toJSONString();
to convert JSON string to PHP array: json_decode($jsonString);
You can also stringify objects, numbers, etc.
Function to pretty print arrays and objects. Detects object recursion and allows setting a maximum depth. Based on arraytostring and u_print_r from the print_r function notes. Should be called like so:
( $value ) //no max depth, or
egvaluetostring ( $value , $max_depth ) //max depth set
function egvaluetostring ( $value , $max_depth , $key = NULL , $depth = 0 , $refChain = array()) <
if( $depth > 0 )
$tab = str_repeat ( «\t» , $depth );
$text .= $tab . ( $key !== NULL ? $key . » => » : «» );
if ( is_array ( $value ) || is_object ( $value )) <
$recursion = FALSE ;
if ( is_object ( $value )) <
foreach ( $refChain as $refVal ) <
if ( $refVal === $value ) <
$recursion = TRUE ;
break;
>
>
array_push ( $refChain , $value );
>
$text .= ( is_array ( $value ) ? «array» : «object» ) . » ( » ;
if ( $recursion ) <
$text .= «*RECURSION* » ;
>
elseif (isset( $max_depth ) && $depth >= $max_depth ) <
$text .= «*MAX DEPTH REACHED* » ;
>
else <
if (!empty( $value )) <
$text .= «\n» ;
foreach ( $value as $child_key => $child_value ) <
$text .= egvaluetostring ( $child_value , $max_depth , ( is_array ( $value ) ? «[» : «» ) . $child_key . ( is_array ( $value ) ? «]» : «» ), $depth + 1 , $refChain ) . «,\n» ;
>
$text .= «\n» . $tab ;
>
>
if ( is_object ( $value )) <
array_pop ( $refChain );
>
>
else <
$text .= » $value » ;
>
I was looking for an array aggregation function here and ended up writing this one.
Note: This implementation assumes that none of the fields you’re aggregating on contain The ‘@’ symbol.
function array_group_by ( $flds , $arr ) <
$groups = array();
foreach ( $arr as $rec ) <
$keys = array_map (function( $f ) use( $rec ) < return $rec [ $f ]; >, $flds );
$k = implode ( ‘@’ , $keys );
if (isset( $groups [ $k ])) <
$groups [ $k ][] = $rec ;
> else <
$groups [ $k ] = array( $rec );
>
>
return $groups ;
>
While PHP has well over three-score array functions, array_rotate is strangely missing as of PHP 5.3. Searching online offered several solutions, but the ones I found have defects such as inefficiently looping through the array or ignoring keys.
The following array_rotate() function uses array_merge and array_shift to reliably rotate an array forwards or backwards, preserving keys. If you know you can trust your $array to be an array and $shift to be between 0 and the length of your array, you can skip the function definition and use just the return expression in your code.
function array_rotate ( $array , $shift ) <
if(! is_array ( $array ) || ! is_numeric ( $shift )) <
if(! is_array ( $array )) error_log ( __FUNCTION__ . ‘ expects first argument to be array; ‘ . gettype ( $array ). ‘ received.’ );
if(! is_numeric ( $shift )) error_log ( __FUNCTION__ . ‘ expects second argument to be numeric; ‘ . gettype ( $shift ). » ` $shift ` received.» );
return $array ;
>
$shift %= count ( $array ); //we won’t try to shift more than one array length
if( $shift 0 ) $shift += count ( $array ); //handle negative shifts as positive
return array_merge ( array_slice ( $array , $shift , NULL , true ), array_slice ( $array , 0 , $shift , true ));
>
?>
A few simple tests:
=array( «foo» => 1 , «bar» => 2 , «baz» => 3 , 4 , 5 );
print_r ( array_rotate ( $array , 2 ));
print_r ( array_rotate ( $array , — 2 ));
print_r ( array_rotate ( $array , count ( $array )));
print_r ( array_rotate ( $array , «4» ));
print_r ( array_rotate ( $array , — 9 ));
?>
/*to change an index without rewriting the whole table and leave at the same place.
*/
function change_index (& $tableau , $old_key , $new_key ) <
$changed = FALSE ;
$temp = 0 ;
foreach ( $tableau as $key => $value ) <
switch ( $changed ) <
case FALSE :
//creates the new key and deletes the old
if ( $key == $old_key ) <
$tableau [ $new_key ] = $tableau [ $old_key ];
unset( $tableau [ $old_key ]);
$changed = TRUE ;
>
break;
case TRUE :
//moves following keys
if ( $key != $new_key ) <
$temp = $tableau [ $key ];
unset( $tableau [ $key ]);
$tableau [ $key ] = $temp ;
break;
>
else < $changed = FALSE ;>//stop
>
>
array_values ( $tableau ); //free_memory
>
//Result :
$tableau = array( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 );
$res = print_r ( $tableau , TRUE );
$longueur = strlen ( $res ) — 1 ;
echo «Old array :\n» . substr ( $res , 8 , $longueur ) . «\n» ;
change_index ( $tableau , 2 , ‘number 2’ );
$res = print_r ( $tableau , TRUE );
$longueur = strlen ( $res ) — 10 ;
echo «New array :\n» . substr ( $res , 8 , $longueur ) . «\n» ;
Источник