-
-
Save YaroslavB/d4b4821eba587c5208ea2ccd3b5d3bef to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php | |
| /****************** удаляем из массива ******************/ | |
| //массив из которого нужно удалить | |
| $letters = array('(', ')', '[', ']', '{', '}','h', 'r','ff'); | |
| //массив данных, которые не трогаем | |
| $no_delete = array('(', ')', '[', ']', '{', '}'); | |
| foreach($letters_new as $key => $char){ | |
| // если символ не в "запретном списке" - удалить его из массива | |
| if(!in_array($char, $no_delete)) unset($letters_new[$key]); | |
| //если нужно удалить символы, которые в массиве $no_delete | |
| if(in_array($char, $no_delete)) unset($letters_new[$key]); | |
| } | |
| /*************** массив в файл и из файла ********************/ | |
| /************************************ | |
| Функция записи массива по строчно в файл | |
| ************************************/ | |
| function gomass($file, $massiv){ | |
| // exit(); | |
| foreach($massiv as $value) // запись хорошего массива | |
| { | |
| $str.= "\n" .$value; | |
| } | |
| $fp = fopen($file, "a"); // Открываем файл в режиме записи | |
| $mytext = $str; // Исходная строка | |
| $test = fwrite($fp, $mytext); // Запись в файл | |
| fclose($fp); //Закрытие файла | |
| } | |
| /********************* | |
| еще одна ункция записи массива в файл | |
| *********************/ | |
| <pre> | |
| <?php | |
| function contextToString($context) | |
| { | |
| $export = ''; | |
| foreach ($context as $key => $value) { | |
| $export .= "{$key}: "; | |
| $export .= preg_replace(array( | |
| '/=>\s+([a-zA-Z])/im', | |
| '/array\(\s+\)/im', | |
| '/^ |\G /m' | |
| ), array( | |
| '=> $1', | |
| 'array()', | |
| ' ' | |
| ), str_replace('array (', 'array(', var_export($value, true))); | |
| $export .= PHP_EOL; | |
| } | |
| return str_replace(array('\\\\', '\\\''), array('\\', '\''), rtrim($export)); | |
| } | |
| $response = []; | |
| $response['result'] = ''; | |
| $response['result']['status'] = false; | |
| $response['result']['error'] = ''; | |
| $response['result']['error']['code'] = 'error_server_account'; | |
| $response['result']['error']['description'] = 'Обратитесь в службу поддержки'; | |
| $response['data'] = 'err'; | |
| print(contextToString($response)); | |
| ?> | |
| </pre> | |
| //output | |
| result: array( | |
| 'status' => false, | |
| 'error' => array( | |
| 'code' => 'error_server_account', | |
| 'description' => 'Обратитесь в службу поддержки', | |
| ), | |
| ) | |
| data: 'err' | |
| /****************** из одномерного массива в двумерный ***********/ | |
| $array = Array('Аксессуары', 'Верхняя одежда', 'Для спорта', 'Нижнее белье', 'Обувь', 'Платье', 'Аксессуары2', 'Верхняя одежда2', 'Для спорта2', 'Нижнее белье', 'Обувь', 'Для девочек', 'Для мальчиков', 'Для новорожденных', 'Игрушки'); | |
| function parceArray(&$arr, $num = 5) { | |
| $newArr = array(); | |
| foreach($arr as $i => $v) $newArr[floor($i / $num)]['key' . ($i++ % $num)] = $v; | |
| return $newArr; | |
| } | |
| echo '<pre>'; | |
| print_r(parceArray($array, 5)); | |
| /***************** из двумерного массива в одномерный *****************/ | |
| //1 способ | |
| function two_to_one($array){ | |
| $new = array(); | |
| foreach ($array as $key=>$val) { | |
| foreach ($val as $k=>$v) { | |
| $new[$k] = $v; | |
| } | |
| } | |
| return $new; | |
| } | |
| // 2 способ | |
| function two_to_one($array){ | |
| $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array)); | |
| $arrOut = iterator_to_array($iterator, true); | |
| return $arrOut; | |
| } | |
| // 3 способо, иногда нужно так | |
| function two_to_one($array){ | |
| $new = array(); | |
| foreach ($array as $key=>$val) { | |
| foreach ($val as $k=>$v) { | |
| $new[] = $v; | |
| } | |
| } | |
| return $new; | |
| } | |
| /************ удаление из одномерного массива по ключам ***************/ | |
| $arr = array('id' => 4, 'date_create' => '4.10.2013 20:47:52', 'name' => 'BCAA', 'depth_level' => 1, 'description' => null, 'searchable_content' => 'BCAA', 'code' => 'BCAA', 'detail_picture' => null); | |
| $delete_keys = array('description', 'searchable_content', 'code', 'detail_picture'); | |
| $arr = array_diff_key($arr, array_flip($delete_keys)); // Only one line! | |
| print_r($arr); | |
| /************ удаление из двумерного массива по ключам ***************/ | |
| function del_item_arr($array){//сюда приходит массив | |
| $delete_keys = array('DEFAULT_VALUE', 'SORT', 'MULTIPLE'); | |
| // print_r($array); | |
| foreach ($array as $key => $value) { | |
| $array_new[] = array_diff_key($value, array_flip($delete_keys)); | |
| } | |
| return $array_new; | |
| } | |
| /*********** объединение двумерных массивов первый вариант **********/ | |
| $result = []; | |
| array_walk_recursive($rez, function ($item, $key) use (&$result) { | |
| $result[] = $item; | |
| }); | |
| /*********** объединение двумерных массивов второй вариант **********/ | |
| <?php | |
| //Enter your code here, enjoy! | |
| $arr1 = array( | |
| array('id' => 57, 'fullName' => 'Иванов Иван Иваныч', /* rest of the fields */), | |
| array('id' => 250, 'fullName' => 'Сидоров Иван Иваныч', /* rest of the fields */), | |
| array('id' => 2530, 'fullName' => 'Петров Иван Иваныч', /* rest of the fields */), | |
| ); | |
| $arr2 = array( | |
| array('ids' => 57, 'age' => 50), | |
| array('ids' => 250, 'age' => 43), | |
| array('ids' => 2530, 'age' => 33), | |
| ); | |
| $arr1 = array_reduce($arr1, function (array $res, array $info) { | |
| $res[$info['id']] = $info; | |
| return $res; | |
| }, array()); | |
| foreach ($arr2 as $ageInfo) { | |
| $id = $ageInfo['ids']; | |
| if(array_key_exists($id, $arr1)) { | |
| //$arr1[$id] = array_merge($arr1[$id], $ageInfo); | |
| $arr1[$id]['age'] = $ageInfo['age']; | |
| } | |
| } | |
| print_r($arr1); | |
| /***************************** | |
| сортировка по алфавиту в двумерном массиве | |
| ****************************/ | |
| <pre> | |
| $data = array | |
| ( | |
| array( 'name' => 'привет 1', 'price' => 200 ), | |
| array( 'name' => 'пока 2', 'price' => 100 ), | |
| array( 'name' => 'ж 2', 'price' => 150, 'rr' => array('dfgh', 'dfghj')), | |
| array( 'name' => 'а 2', 'price' => 110 ), | |
| array( 'name' => 'б 2', 'price' => 1090 ), | |
| ); | |
| //сортировка по алфавиту по имени | |
| usort($data, function($a, $b){ | |
| return strcasecmp($a['name'], $b['name']); | |
| }); | |
| //сортировка по возврастанию по цене | |
| usort($data, function($a, $b){ | |
| return ($a['price'] - $b['price']); | |
| }); | |
| print_r($data); | |
| </pre> | |
| ?> | |
| /************** | |
| Удалить дубликаты из двумерного массива | |
| ***************/ | |
| $arr = array(array('a', 'b'), array('b', 'c'), array('a', 'b'), array('a', 'b')); | |
| $result = array_reduce($arr, function($a, $b) { | |
| static $stored = array(); | |
| $hash = md5(serialize($b)); | |
| if (!in_array($hash, $stored)) { | |
| $stored[] = $hash; | |
| $a[] = $b; | |
| } | |
| return $a; | |
| }, array()); | |
| var_dump($result); // array(2) { [0]=> array(2) { [0]=> string(1) "a" [1]=> string(1) "b" } [1]=> array(2) { [0]=> string(1) "b" [1]=> string(1) "c" } } | |
| /********************** | |
| Поиск в многомерном массиве по значению (не по ключу) | |
| **********************/ | |
| $out_data = array ( | |
| array("01_composita","Composita"), | |
| array("02_composita_p","Composita Plus"), | |
| array("03_contemporanea","Contemporanea"), | |
| array("04_epc","Epc"), | |
| array("05_hotel","Hotel"), | |
| array("06_plain_filomuro","Plait Filomuro"), | |
| array("07_pds","Pds"), | |
| array("08_soluzione","Soluzione"), | |
| array("09_teknoeuropa","Teknoeuropa"), | |
| array("10_telemako","Telemako"), | |
| array("08_soluzione","Telemako") | |
| ); | |
| //Ищем | |
| $needle = "08_soluzione"; | |
| //Собственно поиск | |
| $result = array_filter($out_data, function($innerArray){ | |
| global $needle; | |
| //return in_array($needle, $innerArray); //Поиск по всему массиву | |
| return ($innerArray[0] == $needle); //Поиск по первому значению | |
| }); | |
| //Результат | |
| echo '<pre>'.print_r($result, true).'</pre>'; | |
| //и еще вариант с фильтрацией | |
| function filterElement($array, $name){ | |
| $filtered = array_filter( | |
| $array, | |
| function ($item) use($name){ | |
| return $item->getType() == $name; | |
| } | |
| ); | |
| return $filtered; | |
| } | |
| /**************** Сортировка массива в алфавитном порядке **************/ | |
| //автор не я | |
| $arr = array( | |
| 'Петя', | |
| 'Yury', | |
| 'Maxim', | |
| 'Юденок', | |
| 'Мыков', | |
| 'Obama', | |
| 'Артем', | |
| 'Янукович', | |
| 'Яша', | |
| 'Gerome' | |
| ); | |
| function abc($a,$b){ | |
| $la = mb_substr($a,0,1,'utf-8'); | |
| $lb = mb_substr($b,0,1,'utf-8'); | |
| if(ord($la) > 122 && ord($lb) > 122){ | |
| return $a > $b ? 1 : -1; | |
| } | |
| if(ord($la) > 122 || ord($lb) > 122) { | |
| return $a < $b ? 1 : -1; | |
| } | |
| } | |
| uasort($arr, 'abc'); // или usort(), если сохранение ключей не важно | |
| echo '<pre>'; | |
| print_r($arr); | |
| echo '</pre>'; | |
| /********************** | |
| удаление дубликатов по ключу | |
| ***********************/ | |
| <?php | |
| function super_unique($array,$key) | |
| { | |
| $temp_array = []; | |
| foreach ($array as &$v) { | |
| if (!isset($temp_array[$v[$key]])) | |
| $temp_array[$v[$key]] =& $v; | |
| } | |
| $array = array_values($temp_array); | |
| return $array; | |
| } | |
| $arr=""; | |
| $arr[0]['id']=0; | |
| $arr[0]['titel']="ABC"; | |
| $arr[1]['id']=1; | |
| $arr[1]['titel']="DEF"; | |
| $arr[2]['id']=2; | |
| $arr[2]['titel']="ABC"; | |
| $arr[3]['id']=3; | |
| $arr[3]['titel']="XYZ"; | |
| echo "<pre>"; | |
| print_r($arr); | |
| echo "unique*********************<br/>"; | |
| print_r(super_unique($arr,'titel')); | |
| ?> | |
| /****************************** | |
| достать уникальные значения из многомерного массива | |
| *****************************/ | |
| $b = array ( | |
| 0 => array ( | |
| 'id' => 1, | |
| 'pid' => 121, | |
| 'uuid' => 1, | |
| ), | |
| 1 => array ( | |
| 'id' => 2, | |
| 'pid' => 13, | |
| 'uuid' => 1, | |
| ), | |
| 2 => array ( | |
| 'id' => 5, | |
| 'pid' => 121, | |
| 'uuid' => 1, | |
| ) | |
| ); | |
| $uniquePids = array_unique(array_map(function ($i) { return $i['pid']; }, $b)); | |
| var_dump($uniquePids); | |
| /******************************* | |
| уникальные элементы ассоциативного массива | |
| ********************************/ | |
| $a = array ( | |
| 0 => array ( 'value' => 'America', ), | |
| 1 => array ( 'value' => 'England', ), | |
| 2 => array ( 'value' => 'Australia', ), | |
| 3 => array ( 'value' => 'America', ), | |
| 4 => array ( 'value' => 'England', ), | |
| 5 => array ( 'value' => 'Canada', ), | |
| ); | |
| $tmp = array (); | |
| foreach ($a as $row) | |
| if (!in_array($row,$tmp)) array_push($tmp,$row); | |
| print_r ($tmp); | |
| /***************************** | |
| первая буква из элементов массива | |
| *****************************/ | |
| $array = [ | |
| [ | |
| 'name' => 'Брянск' | |
| ], | |
| [ | |
| 'name' => 'Москва' | |
| ], | |
| [ | |
| 'name' => 'Можайск' | |
| ], | |
| [ | |
| 'name' => 'Барнуал' | |
| ], | |
| [ | |
| 'name' => 'Бобруйск' | |
| ], | |
| [ | |
| 'name' => 'Санкт-Петербург' | |
| ], | |
| [ | |
| 'name' => 'Дмитров' | |
| ], | |
| [ | |
| 'name' => 'Дубна' | |
| ], | |
| ]; | |
| # Сортируем по алфавиту | |
| asort( $array ); | |
| # Формируем массив разбитый на категории | |
| sorting( $array ); | |
| function sorting( & $array ) | |
| { | |
| # "Память" | |
| $memory = NULL; | |
| # Новый массив | |
| $sorting = array(); | |
| # Обходим массив | |
| foreach( $array as $key=>$item ) | |
| { | |
| # Получаем первую букву | |
| $letter = mb_substr( $item['name'], 0, 1, 'utf-8' ); | |
| # Если текущая буква не равна предыдущей | |
| if( $letter != $memory ) | |
| { | |
| # Заносим букву в "память" | |
| $memory = $letter; | |
| # Добавляем новый массив | |
| $sorting[$memory] = array(); | |
| } | |
| # Дополняем массив | |
| $sorting[$memory][$key] = $item; | |
| } | |
| # Назвачаем массив | |
| $array = $sorting; | |
| } | |
| var_dump($array); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment