Как вывести массив из массива?
Нужно просто пройтись циклом по массиву и собрать всё в новый, ничего сложного:
$array = [ [ 'image' => 1, '_title' => '' ], [ 'image' => 1, '_title' => '' ] ]; $images = []; foreach ($array as $item) < array_push($images, $item['image']); >print_r($images);
Array ( [0] => 1 [1] => 1 )
Отслеживать
ответ дан 26 мая 2017 в 13:14
9,081 2 2 золотых знака 16 16 серебряных знаков 35 35 бронзовых знаков
буду банален, наверное, но :
$images = array_column($data, 'image');
Отслеживать
ответ дан 26 мая 2017 в 13:39
29.1k 1 1 золотой знак 21 21 серебряный знак 43 43 бронзовых знака
Идеальный ответ
26 мая 2017 в 13:44
@RazmikGalstyan не совсем, ибо данная функция требует PHP 5.5 и выше.
26 мая 2017 в 13:53
Вам придется пробежаться по массиву и в цикле взять и сохранять элементы в новый массив следующим способом.
$images = array(); foreach ($array as $item) < $images[] = $item['image']; >print_r($images);
Отслеживать
ответ дан 26 мая 2017 в 13:19
Raz Galstyan Raz Galstyan
8,193 1 1 золотой знак 19 19 серебряных знаков 50 50 бронзовых знаков
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Вывести элементы массива
Вывести элементы массива можно через цикл foreach() .
$arrays = ['PHP', 'MySQL']; $html = ''; foreach ($arrays as $array) < $html .= $array.', '; > echo $html; // PHP, MySQL
Стоит отметить, что вывод элементов массива происходит не внутри цикла, а внешне. Внутри цикла формируется только переменная с результатом. Это сделано для производительности, т.к. добавление элемента массива в переменную работает быстрее, чем сразу её вывод в каждой итерации цикла.
Если надо вывести элементы массива через запятую, как указано на примере выше, то можно сократить код:
$array = ['PHP', 'MySQL']; echo implode(', ', $array); // PHP, MySQL
Функция implode() выводит элементы массива через указанный разделитель, в данном примере через разделитель «, ».
2-ой способ: Отладка
Когда надо временно вывести элементы массива, чтобы просмотреть её значения, то можно использовать функцию print_r() или var_dump() .
Также для этой цели рекомендуется установить расширение Xdebug, который будет подсвечивать var_dump() , что визуально будет удобно для отладки массивов.
Обновлено: 01 ноября 2020
Комментарии
Авторизуйтесь, чтобы добавлять комментарии
Вывод массива с данными на PHP
В разработке сайтов любой сложности, одна из основных задач это вывод массивов. PHP Массив можно вывести несколькими способами. Рассмотрим примеры основных PHP функций для вывода элементов массива в окно браузера.
Функция print_r()
Функция print_r() выводит информацию о переменной массива в читабельном виде. Чтобы отобразить результат выполнения функции print_r() с пробелами и переносами — нужно обернуть вывод в тег pre.
Результат:
Функция var_dump()
Функция var_dump() отображает информацию о переменной массива, которая включает тип переменной и ее значение.
Результат:
Функция var_export()
var_export() возвращает представление переменной массива в виде полноценного PHP кода.
Результат:
Цикл foreach
foreach — поэлементный перебор массива
Результат:
Пример foreach с выводом списка с ключами с использованием индексов массива
Результат:
Цикл for
for подойдет в случаях, когда индексы массива имеют последовательную непрерывную нумерацию.
Результат:
Цикл while
while похожий цикл на for только с другим синтаксисом
Результат:
Функция implode()
Иногда для вывода массива можно использовать функцию implode(), которая объединяет элементы массива в текстовую строку через указанный разделитель.
Результат:
Смотрите также
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.
15 years ago
Big arrays use a lot of memory possibly resulting in memory limit errors. You can reduce memory usage on your script by destroying them as soon as you´re done with them. I was able to get over a few megabytes of memory by simply destroying some variables I didn´t use anymore.
You can view the memory usage/gain by using the funcion memory_get_usage(). Hope this helps!
4 years ago
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 = 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 )
?>
17 years ago
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 ;
>
?>
3 years ago
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 ;
>
?>
11 years ago
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 ;
>
?>
12 years ago
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 =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 ));
?>
8 years ago
/*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» ;
