Intereting Posts
как изменить значение с помощью переключателей Изменение ассоциативного массива в индексированный массив / получение Zend_Table_Row_Abstract как неассоциативного как я могу запросить переменную в моем home.ctp моего приложения cakePHP? Метод Php $ _GET Существует ли ограничение при использовании функции php mail? PHP извлекает внешние данные программы Получение данных для нескольких одиночных или справочных без использования оператора Создание точек между символами со всеми возможностями Почему переменные среды Python различаются при выполнении с веб-сервера? Laravel 5.2 Пробный тест загрузки загруженного файла Мне нужно объявление DOCTYPE в php-файле с html? Может ли определение множества констант вызвать проблемы с производительностью или памятью? Преобразование на сегодняшний день в PHP из формата yyyymmdd Изменение высоты строки Bootstrap с помощью отдельного div Является ли мой код убийцей производительности?

2d многомерный массив в 1d массив в php

Просто интересно, изменил ли кто-нибудь 2-мерный массив на один тусклый массив в php. Я еще не нашел ясного объяснения в php. Любое предложение будет оценено по достоинству.

Попробуй это:

function array_2d_to_1d ($input_array) { $output_array = array(); for ($i = 0; $i < count($input_array); $i++) { for ($j = 0; $j < count($input_array[$i]); $j++) { $output_array[] = $input_array[$i][$j]; } } return $output_array; } 

Это может быть полезно для вас, если вы извлекаете значения из Query здесь, вы можете использовать функцию массива, которая будет поддерживать в PHP 5.5+

 $myfield_arr = array_column($query_result, 'myfield_name'); 

Скажи «До свидания»! Наслаждайтесь Smart Code.

вы имеете в виду вот так?

 $array = array(array('green', 'yellow', 'orange'), array('blue', 'black', 'white')); $newarray = array(); foreach (array_values($array) as $value){ $newarray[] = $value; } 

Это зависит от того, что вам нужно, но если вы хотите уменьшить ваш 2d-массив до кривой 1d, которая заполняет 2d-плоскость, вы, вероятно, ищете пространственный индекс или кривую заполнения пробела. Известны и известны не так, как г-кривая, кривая Гильберта, кривая пеано или кривая мура. Вы можете написать такую ​​кривую с L-системой.

Попробуй это:

 function array_to1d($a) { $out = array(); foreach ($a as $b) { foreach ($b as $c) { if (isset($c)) { $out[] = $c; } } } return $out; } 

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

Решение для прямоугольной 2D-массива действительно просто, но у меня была проблема: мой 2D-массив состоял из 1D массивов разной длины, например:

 myArray=array( array(1, 2, 3, 4), array(5, 6, 7), array(8, 9) ); 

и я придумал более обобщенное решение превратить любой 2D-массив в 1D:

 function array2DTo1D($arr2D){ $i=0; $j=0; $arr1D=array(); while (isset($arr2D[$i][0])){ while (isset($arr2D[$i][$j])){ $arr1D[]=$arr2D[$i][$j]; $j++; } $i++;$j=0; } return $arr1D; }