Этот урок набрал набрал достаточно большое количество
комментариев и дальнейшее его комментирование отключено.
Если вы хотели убедиться в правильности выполнения ДЗ или у вас возник вопрос по уроку,
посмотрите ранее добавленные комментарии, кликнув по кнопке ниже. Скорее всего вы найдете там то, что искали.
Если это не помогло - задайте вопрос в чате в телеграме - https://t.me/php_zone
$arr = [1,3,2];
// функция sort() сортерует массив от меньшего к большему.
sort($arr);
// с помощью фуекции implode() приобразуем массив в строку.
$format = implode(':',$arr);
echo $format;
// заполняем массив
$arr = [1,2,3,4,5];
// с помощью функции array_splice удаляем первый и последний элемент в массиве
$output = array_splice($arr, 1 , -1);
// c помощью цикла foreach выводим оставшиеся элементы массива в браузер
foreach ($output as $value){
echo $value . ' ';
}
Во втором задании верным будет второй вариант, так как работа идёт с исходным массивом. А так - всё правильно =) В первом задании можно было использовать просто sort(), но не принципиально.
// Есть массив чисел – [1, 3, 2].
// Отсортируйте их от меньшего к большему и преобразуйте в строку, в которой значения элементов массива разделяются двоеточиями.
// В результате должна получиться строка “1:2:3”.
$numbers = [
1,
3,
2
];
sort($numbers);
$comma_separated = implode(":", $numbers);
echo $comma_separated;
// Есть массив чисел – [1, 2, 3, 4, 5].
// Получите с помощью одной функции массив, в котором будут элементы исходного с 1-го элемента по 3-й.
// В результате должен получиться массив с числами [2, 3, 4].
$numbers = [
1,
2,
3,
4,
5
];
$output = array_slice($numbers, 1, 3);
echo var_dump($output);
// Есть массив чисел – [1, 2, 5, 2, 3, 1, 6].
// Получите такой массив, в котором каждое значение из исходного будет содержаться только один раз.
// В результате должен получиться массив, содержащий числа [1, 2, 5, 3, 6].
$numbers = [
1,
2,
5,
2,
3,
1,
6
];
$result = array_unique($numbers);
echo var_dump($result);
Только я не совсем понял почему флаг SORT_NUMERIC указывает последний ключ в массиве со словом, он же должен сравнивать элементы как числа, и если в массиве допустим много числовых значений и строковых как выбрать только числовые например?
Есть массив чисел – [1, 3, 2]. Отсортируйте их от меньшего к большему и преобразуйте в строку, в которой значения элементов массива разделяются двоеточиями. В результате должна получиться строка “1:2:3”.
Есть массив чисел – [1, 2, 3, 4, 5]. Получите с помощью одной функции массив, в котором будут элементы исходного с 1-го элемента по 3-й. В результате должен получиться массив с числами [2, 3, 4].
Есть массив чисел – [1, 2, 5, 2, 3, 1, 6]. Получите такой массив, в котором каждое значение из исходного будет содержаться только один раз. В результате должен получиться массив, содержащий числа [1, 2, 5, 3, 6].
//Есть массив чисел – [1, 3, 2]. Отсортируйте их от меньшего к большему и преобразуйте в строку,
//в которой значения элементов массива разделяются двоеточиями. В результате должна получиться строка “1:2:3”.
// Есть массив чисел – [1, 2, 5, 2, 3, 1, 6]. Получите такой массив, в котором каждое значение из исходного будет
// содержаться только один раз. В результате должен получиться массив, содержащий числа [1, 2, 5, 3, 6].
//Есть массив чисел – [1, 2, 3, 4, 5]. Получите с помощью одной функции массив, в котором будут элементы исходного
// с 1-го элемента по 3-й. В результате должен получиться массив с числами [2, 3, 4].
по array_slice - там же происходит сброс ключа, поэтому и выбрал array_diff
результаты:
array (size=3)
0 => int 2
1 => int 3
2 => int 4
array (size=3)
1 => int 2
2 => int 3
3 => int 4
Чисто для себя скинул ДЗ, так как вариантов тут действительно не много, найти в библиотеке PHP, на которую еще и ссылку дали функции для решение задачи, но как говориться лучше сделать, чем не сделать. Спасибо за качественные уроки!!!
Есть массив чисел – [1, 3, 2]. Отсортируйте их от меньшего к большему и преобразуйте в строку, в которой значения элементов массива разделяются двоеточиями. В результате должна получиться строка “1:2:3”.
Есть массив чисел – [1, 2, 3, 4, 5]. Получите с помощью одной функции массив, в котором будут элементы исходного с 1-го элемента по 3-й. В результате должен получиться массив с числами [2, 3, 4].
Есть массив чисел – [1, 2, 5, 2, 3, 1, 6]. Получите такой массив, в котором каждое значение из исходного будет содержаться только один раз. В результате должен получиться массив, содержащий числа [1, 2, 5, 3, 6].
<?php
/*Есть массив чисел – [1, 3, 2]. Отсортируйте их от меньшего к большему и преобразуйте в строку,
в которой значения элементов массива разделяются двоеточиями.
В результате должна получиться строка “1:2:3”.
*/
$numbers = [
1,
2,
3,
4,
8,
7,
6,
5
];
sort($numbers);
echo implode(":", $numbers);
<?php
/*Есть массив чисел – [1, 2, 3, 4, 5].
Получите с помощью одной функции массив, в котором будут элементы исходного с 1-го элемента по 3-й.
В результате должен получиться массив с числами [2, 3, 4].
*/
function newArray ($newNumbers=[]){
$numbers = [1, 2, 3, 4, 5];
$newNumbers[] = $numbers[1];
$newNumbers[] = $numbers[2];
$newNumbers[] = $numbers[3];
$rezult= implode(", ", $newNumbers);
return $rezult;
}
echo newArray ();
выполнение домашки показываю сыну (хвастаюсь), он пару лет кодит на питоне. Он говорит что так правильнее, типа универсальнее. Но почему я так и не понял
Потому что функция должна принимать на вход параметры и что-то делать, а в вашем решении все написан внутри функции, и от функции не остается никакого смысла. array_slice
Третья... это было самое быстрое задание для меня из всех прошлых уроков :)))
<?php
/*Есть массив чисел – [1, 2, 5, 2, 3, 1, 6].
Получите такой массив, в котором каждое значение из исходного будет содержаться только один раз.
В результате должен получиться массив, содержащий числа [1, 2, 5, 3, 6].
*/
$arrey=[1, 2, 5, 2, 3, 1, 6];
$unik=array_unique ($arrey);
echo implode(", ", $unik);
Есть массив чисел – [1, 3, 2]. Отсортируйте их от меньшего к большему и преобразуйте в строку, в которой значения элементов массива разделяются двоеточиями. В результате должна получиться строка “1:2:3”.
Есть массив чисел – [1, 2, 3, 4, 5]. Получите с помощью одной функции массив, в котором будут элементы исходного с 1-го элемента по 3-й. В результате должен получиться массив с числами [2, 3, 4].
Есть массив чисел – [1, 2, 5, 2, 3, 1, 6]. Получите такой массив, в котором каждое значение из исходного будет содержаться только один раз. В результате должен получиться массив, содержащий числа [1, 2, 5, 3, 6].
Добрый день, не могли бы подсказать,я когда делаю сортировку массива,у меня почему-то значения ключа,по которому я делаю сортировку улетают в самый низ массива при отражении var_dump
//Есть массив чисел – [1, 3, 2]. Отсортируйте их от меньшего к большему и преобразуйте в строку, в которой значения элементов массива разделяются двоеточиями. В результате должна получиться строка “1:2:3”.
$array = [1, 3, 2];
asort($array);
echo implode(':', $array);
echo '<br><br>';
//Есть массив чисел – [1, 2, 3, 4, 5]. Получите с помощью одной функции массив, в котором будут элементы исходного с 1-го элемента по 3-й. В результате должен получиться массив с числами [2, 3, 4].
$array2 = [1, 2, 3, 4, 5];
$array2 = array_slice($array2, 1, 3);
var_dump($array2);
echo '<br><br>';
//Есть массив чисел – [1, 2, 5, 2, 3, 1, 6]. Получите такой массив, в котором каждое значение из исходного будет содержаться только один раз. В результате должен получиться массив, содержащий числа [1, 2, 5, 3, 6].
$array3 = [1, 2, 5, 2, 3, 1, 6];
$array3 = array_unique($array3);
var_dump($array3);
//Сортирует массив по значениям используя пользовательскую функцию для сравнения элементов
function cmp($a, $b)
{
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;// если $a > $b то в обратном порядке
}
$a = array(3,5,8,1,2,9,8);
usort($a,"cmp");
var_dump (array_unique($a));
echo "<br>";
/*
* Есть массив чисел – [1, 3, 2].
* Отсортируйте их от меньшего к большему и преобразуйте в строку,
* в которой значения элементов массива разделяются двоеточиями.
* В результате должна получиться строка “1:2:3”.
*/
$arr = [1, 3, 2];
sort($arr);
$str = implode(":", $arr);
/*
* Есть массив чисел – [1, 2, 3, 4, 5].
* Получите с помощью одной функции массив, в котором будут элементы исходного с 1-го элемента по 3-й.
* В результате должен получиться массив с числами [2, 3, 4].
*/
var_dump(array_slice([1, 2, 3, 4, 5], 1, 3));
/*
* Есть массив чисел – [1, 2, 5, 2, 3, 1, 6].
* Получите такой массив, в котором каждое значение из исходного будет содержаться только один раз.
* В результате должен получиться массив, содержащий числа [1, 2, 5, 3, 6].
*/
var_dump(array_unique([1, 2, 5, 2, 3, 1, 6]));
<?php
//Есть массив чисел – [1, 3, 2].
// Отсортируйте их от меньшего к большему и преобразуйте в строку, в которой значения элементов массива разделяются двоеточиями.
// В результате должна получиться строка “1:2:3”.
$numbers = [1, 3, 2];
asort($numbers);
echo implode(":", $numbers);
//Есть массив чисел – [1, 2, 3, 4, 5].
// Получите с помощью одной функции массив, в котором будут элементы исходного с 1-го элемента по 3-й.
// В результате должен получиться массив с числами [2, 3, 4].
$numbers = [1, 2, 3, 4, 5];
$result = array_slice($numbers, 1, 3);
var_dump($result);
//Есть массив чисел – [1, 2, 5, 2, 3, 1, 6].
// Получите такой массив, в котором каждое значение из исходного будет содержаться только один раз.
// В результате должен получиться массив, содержащий числа [1, 2, 5, 3, 6].
$numbers = [1, 2, 5, 2, 3, 1, 6];
$result = array_unique($numbers);
var_dump($result);
<?php
/*Есть массив чисел – [1, 3, 2]. Отсортируйте их от меньшего к большему и преобразуйте в строку,
*в которой значения элементов массива разделяются двоеточиями.
*/
$arr = [1, 3, 2];
sort($arr);
echo implode(':', $arr) . '<br>';
/*Есть массив чисел – [1, 2, 3, 4, 5]. Получите с помощью одной функции массив,
*в котором будут элементы исходного с 1-го элемента по 3-й.
*/
$arr = [1, 2, 3, 4, 5];
$arr = array_slice($arr, 1,3);
var_dump($arr);
echo '<br>';
/*Есть массив чисел – [1, 2, 5, 2, 3, 1, 6]. Получите такой массив,
*в котором каждое значение из исходного будет содержаться только один раз.
*В результате должен получиться массив, содержащий числа [1, 2, 5, 3, 6].
*/
$arr = [1, 2, 5, 2, 3, 1, 6];
$arr = array_unique($arr);
var_dump($arr);
Потом увидел что первые 2 задачи люди делают вообще не так. Я думал по той ссылке есть всё необходимое, оказывается нет. И я переделал первые 2 задачи:
<?php
//часть 1: Отсортировать значения массива от меньшего к большему
// и преобразовать их в строку, в которой значения элементов
// массива разделяются двоеточиями
$numbers = [
1,
3,
2,
];
sort($numbers);
echo implode(':', $numbers);
//часть 2: Получить с помощью одной функции массив, в котором
// будут элементы исходного с 1-го элемента по 3-й
$numbers = [
1,
2,
3,
4,
5
];
var_dump(array_slice($numbers, 1, 3));
//часть 3: Удалить все повторы чисел и отсортировать числа в порядке возрастания.
// Вывести их, разделив пробелами.
$string = '0 2 3 1 2';
$numbers = array_unique(explode(' ', $string));
sort($numbers);
echo implode(' ', $numbers);
asort стоял первый в списке на сайте оф. документации. По пути наименьшего сопротивления.) А на разницу между ними я обратил внимание.
По cz вы имеете ввиду, что нужно самостоятельным алгоримом заменить функцию array_unique?
От старого синтаксиса постараюсь отучится.
asort сортирует массив и сохраняет ключ, поэтому решил попробовать, просто интересно было можно ли им заменить sort. Результат выражения получился схожим. Поэтому решил его оставить.
По поводу кавычек, это невнимательность моя, признаю как и то что перед var_dump echo написал (уберу его).
P. S. Понимаю что некорректно то что я делаю, но порой чисто из интереса пробую нестандартные пути.
Крайне неоптимальное решение. Не гибкое. Если вдруг в исходном массиве изменится количество элементов или значения чисел, всё надо будет переписывать. Алгоритм должен быть таким, чтобы после изменения входных данных программа продолжала работать. А тут какой-то подгон под ответ.
//Есть массив чисел – [1, 3, 2].
//Отсортируйте их от меньшего к большему и преобразуйте в строку,
//в которой значения элементов массива разделяются двоеточиями.
//В результате должна получиться строка “1:2:3”.
$numArr = [1, 3, 2];
function func($numArr) {
sort($numArr);
echo $strNum = implode(":", $numArr);
}
func($numArr);
echo '<br/> <hr/> <br/>';
//Есть массив чисел – [1, 2, 3, 4, 5].
//Получите с помощью одной функции массив,
//в котором будут элементы исходного с 1-го элемента по 3-й.
//В результате должен получиться массив с числами [2, 3, 4].
$numArray = [1, 2, 3, 4, 5];
function myFunc($numArray)
{
$slice = array_slice($numArray, 1, 3);
var_dump($slice);
}
myFunc($numArray);
А можете оформить переносы? Чтобы код был кодом? Нажмите на карандашик и поправьте, пожалуйста. А потом ответьте мне на этот комментарий. Проверю домашку после этого.
А можешь научно-популярно объяснить, как работает isset из решения в третьем задании?
Почитал документацию, и посмотрел, как работает через дебаггер, но до конца логику не пониманию, он проверяет на истинность того, есть ли помещаемое число уже в массиве, или нет? Или из-за отрицания спрашивает, нет ли его там, если нет, значит помещает? Ааааа. Кипит котёл.
Привет, мой код по задаче https://php.zone/problems/5 прошел все тесты. Посмотрел ваше решение и теперь мне кажется что я написал длинный и трудночитаемый код.
Спасибо, в телеграмме обсудили тему sort и asort. Тут нужно было просто sort воспользоваться т.к. массив у меня не ассоциативный.
Спасибо за implode удобная функция, о ней не знал.
/*1. Есть массив чисел – [1, 3, 2]. Отсортируйте их от меньшего к большему и преобразуйте в строку, в которой значения элементов массива разделяются двоеточиями. В результате должна получиться строка “1:2:3”.*/
$array1 = [3, 5, 1, 2];
sort($array1);
echo implode(':', $array1);
echo '<hr>';
/*2. Есть массив чисел – [1, 2, 3, 4, 5]. Получите с помощью одной функции массив, в котором будут элементы исходного с 1-го элемента по 3-й. В результате должен получиться массив с числами [2, 3, 4].*/
$array2 = [1, 2, 3, 4, 5];
$section = array_slice($array2, 1, 3); //Выбирает срез массива
var_dump($section);
echo '<hr>';
/*3.На вход дана строка с числами, разделенными пробелами.Удалите все повторы чисел.
Выведите их в любом порядке, разделив пробелами.*/
$line = '0 2 3 1 2';
$array = explode(' ', $line);
$array = array_unique($array);
$line = implode(' ', $array);
echo $line;
echo '<hr>';
Добрый день. по 3её задаче уже потом посмотрел решение с isset и понял как работает.
<?php
//Есть массив чисел – [1, 3, 2]. Отсортируйте их от меньшего к большему и преобразуйте в строку
//, в которой значения элементов массива разделяются двоеточиями.
// В результате должна получиться строка “1:2:3”.
$arr = [1, 3, 2];
sort($arr);
$str=implode ( ':' , $arr );
echo $str;
echo '</br>';
//Есть массив чисел – [1, 2, 3, 4, 5]. Получите с помощью одной функции массив, в котором будут элементы
//исходного с 1-го элемента по 3-й. В результате должен получиться массив с числами [2, 3, 4].
$arr2=[1, 2, 3, 4, 5];
echo var_dump( range('2', '4'));
Во втором задании не понял, почему функция range() считает элементы массива с 1, а не с 0?
Вот, исправил. Но на PHP.net написано, что range — Создаёт массив, содержащий диапазон элементов, в ДЗ написано, что надо получить с помощью одной функции массив, в котором будут элементы исходного с 1-го элемента по 3-й, я же это и сделал получается, только не вывел значение функции в переменную, а результат по факту тот же) Или я чего-то не понимаю)
/*Есть массив чисел – [1, 3, 2]. Отсортируйте их от меньшего к большему и преобразуйте в строку,
в которой значения элементов массива разделяются двоеточиями.
В результате должна получиться строка “1:2:3”.*/
$arrayOfNumbers = [1, 3, 2];
asort($arrayOfNumbers);
$arrayNumbersString = implode(':', $arrayOfNumbers);
echo $arrayNumbersString;
Второе задание:
/*Есть массив чисел – [1, 2, 3, 4, 5]. Получите с помощью одной функции массив,
в котором будут элементы исходного с 1-го элемента по 3-й.
В результате должен получиться массив с числами [2, 3, 4].*/
$arrayOfNumbers = [1, 2, 3, 4, 5];
$resultArrSlice = array_slice($arrayOfNumbers, 1, 3);
var_dump($resultArrSlice);
first:
second:
third:
Отлично! Я бы решал точно так же :)
Есть одно, очень элегантное решение последней задачи с помощью функции array_flip. Оно в два раза быстрее функции array_unique.
Я Вам скажу по секрету, вот так - ещё быстрее.
При этом ещё и ключи сохранятся.
Однако, такие хаки работают только если в качестве значений в массиве будут лежать string или integer. С тем же float уже не получится:
Будет ошибка:
В плане скорости - выигрыш. А под элегантностью в программировании мне привычнее понимать очевидность кода, чем его скорость работы.
Ставлю плюсик за то, что копнули поглубже :)
А как их сразу отсортировать в данном случае? Убрали повторяющиеся значения, но хочется чтоб они сразу сортировались по возрастанию.
Только дополнительно отсортировав.
Второе задание - некорректно. range возвращает просто массив с числами, никак не связанных с исходным массивом, вот тут правильно - https://php.zone/php-training-course/18#comment485
Остальные задания верны.
1
Отлично)
2
Отлично!
3
И снова отлично! =)
Во втором задании верным будет второй вариант, так как работа идёт с исходным массивом. А так - всё правильно =) В первом задании можно было использовать просто sort(), но не принципиально.
Хороший урок!)
Отлично!
3
2
1
Хорошо, а почему в обратном порядке?)
Только я не совсем понял почему флаг SORT_NUMERIC указывает последний ключ в массиве со словом, он же должен сравнивать элементы как числа, и если в массиве допустим много числовых значений и строковых как выбрать только числовые например?
Хорошо. А отфильтровать можно с помощью array_filter()
Отлично!
Первое:
Второе:
Третье:
Супер!
Есть массив чисел – [1, 3, 2]. Отсортируйте их от меньшего к большему и преобразуйте в строку, в которой значения элементов массива разделяются двоеточиями. В результате должна получиться строка “1:2:3”.
Есть массив чисел – [1, 2, 3, 4, 5]. Получите с помощью одной функции массив, в котором будут элементы исходного с 1-го элемента по 3-й. В результате должен получиться массив с числами [2, 3, 4].
Есть массив чисел – [1, 2, 5, 2, 3, 1, 6]. Получите такой массив, в котором каждое значение из исходного будет содержаться только один раз. В результате должен получиться массив, содержащий числа [1, 2, 5, 3, 6].
Отлично!
Исходный массив задание 1:
[1,3,2]
Модифицированный массив по заданию 1:
[1:2:3]
Исходный массив задание 2:
[1,2,3,4,5]
Модифицированный массив по заданию 2:
[2,3,4]
Исходный массив задание 3:
[1,2,5,2,3,1,6]
Модифицированный массив по заданию 3:
[1,2,5,3,6]
В целом всё норм, но непонятно, зачем вместо вызова напрямую implode оборачивать её в arrayToString, которая ничего другого не делает.
//Есть массив чисел – [1, 3, 2]. Отсортируйте их от меньшего к большему и преобразуйте в строку,
//в которой значения элементов массива разделяются двоеточиями. В результате должна получиться строка “1:2:3”.
// Есть массив чисел – [1, 2, 5, 2, 3, 1, 6]. Получите такой массив, в котором каждое значение из исходного будет
// содержаться только один раз. В результате должен получиться массив, содержащий числа [1, 2, 5, 3, 6].
//Есть массив чисел – [1, 2, 3, 4, 5]. Получите с помощью одной функции массив, в котором будут элементы исходного
// с 1-го элемента по 3-й. В результате должен получиться массив с числами [2, 3, 4].
вот это я накакокодил с первым заданием ))) не нашел я implode))))
Как вы уже сами сказали, можно проще. Сортировку тоже стоило встроенную использовать:
Всё ок
по array_slice - там же происходит сброс ключа, поэтому и выбрал array_diff
результаты:
array (size=3)
0 => int 2
1 => int 3
2 => int 4
array (size=3)
1 => int 2
2 => int 3
3 => int 4
Когда берется срез из существующего массива, ключи как правило не нужны.
ок,спасибо)
Добрый вечер!
Домашнее задание:
1:
2:
3:
Всё отлично!
Чисто для себя скинул ДЗ, так как вариантов тут действительно не много, найти в библиотеке PHP, на которую еще и ссылку дали функции для решение задачи, но как говориться лучше сделать, чем не сделать. Спасибо за качественные уроки!!!
Отлично! Суть этой домашки - показать что в этой доке все просто и понятно)
Ок!
Сделал так, потом увидел "implode"
$ToSortTheNumbers = [1, 3, 2];
sort($ToSortTheNumbers);
echo "$ToSortTheNumbers[0] : $ToSortTheNumbers[1] : $ToSortTheNumbers[2]";
Такое решение не гибкое - если поменяется число элементов массива, то всё поломается. Если и делать, то через цикл.
Правильно так ?
Да. Всё верно.
Отлично!
Отлично!
Первое задание:
Второе задание:
Третье задание:
Отлично
При решении первой задачи не сразу нашел нужные функции получилось так:
Второй вариант :
Вторая задача:
Третья задача:
Отлично
Сортировка массива и преобразование в строку
Часть массива
Удаление дублей массива
Отлично
Отлично
Первое:
Второе:
Третье:
Ок =)
Есть массив чисел – [1, 3, 2]. Отсортируйте их от меньшего к большему и преобразуйте в строку, в которой значения элементов массива разделяются двоеточиями. В результате должна получиться строка “1:2:3”.
Отлично
Есть массив чисел – [1, 2, 3, 4, 5]. Получите с помощью одной функции массив, в котором будут элементы исходного с 1-го элемента по 3-й. В результате должен получиться массив с числами [2, 3, 4].
Отлично
Есть массив чисел – [1, 2, 5, 2, 3, 1, 6]. Получите такой массив, в котором каждое значение из исходного будет содержаться только один раз. В результате должен получиться массив, содержащий числа [1, 2, 5, 3, 6].
Отлично. Текст задания дублировать не надо =)
Ок
Отлично!
Ок. Только в именах переменных не используются подчеркивания.
Первая домашка
У вас массив с уже отсортированными числами
Это не так, посмотрите внимательно.
Ок. Прошу прощения
Вторая:
array_slice - прочитайте про эту функцию. Аргументы опять никак не используются...
Так?
P.S. понял, читаю про array_slice
выполнение домашки показываю сыну (хвастаюсь), он пару лет кодит на питоне. Он говорит что так правильнее, типа универсальнее. Но почему я так и не понял
Потому что функция должна принимать на вход параметры и что-то делать, а в вашем решении все написан внутри функции, и от функции не остается никакого смысла. array_slice
Так?
В общем и целом да, только в этом задании не нужно было оборачивать в функцию. Ну и про передачу аргументов я вам уже писал. Просто:
Третья... это было самое быстрое задание для меня из всех прошлых уроков :)))
Тут все хорошо
Отлично
Код:
Первое решение не годится. Посмотрите другие решения.
Первое задание изменил. Подсмотрел у ребят решение, спасибо за клёвые уроки.
Отлично. Пожалуйста)
1.
2.
3.
В целом - отлично
3-й вариант подсмотрел в комментах, т.к не смог найти функцию
Отлично!
Отлично!
Зачем ты оставляешь строку "пишите здесь ваш код"? На ее месте нужно код писать.
По функциям - ок.
Отлично
Есть массив чисел – [1, 3, 2]. Отсортируйте их от меньшего к большему и преобразуйте в строку, в которой значения элементов массива разделяются двоеточиями. В результате должна получиться строка “1:2:3”.
Отлично
Есть массив чисел – [1, 2, 3, 4, 5]. Получите с помощью одной функции массив, в котором будут элементы исходного с 1-го элемента по 3-й. В результате должен получиться массив с числами [2, 3, 4].
Отлично
Есть массив чисел – [1, 2, 5, 2, 3, 1, 6]. Получите такой массив, в котором каждое значение из исходного будет содержаться только один раз. В результате должен получиться массив, содержащий числа [1, 2, 5, 3, 6].
Отлично
Отлично
Отлично
Задание 1.
Задание 2.
Задание 3.
Отлично. Для строк используй одинарные кавычки.
Поправил.
Ок
Задача №1
Задача №2
Задача №3
Почему использовали asort вместо sort?
Отлично
Отлично
Добрый день, не могли бы подсказать,я когда делаю сортировку массива,у меня почему-то значения ключа,по которому я делаю сортировку улетают в самый низ массива при отражении var_dump
Читай документацию к функции. Я даже не знаю, что ты сделать пытаешься)
//Задание 1
//Задание 2
//Задание 3
Для чего в первом задании переменная $str?
Чтобы записать результат функции имплойд
Этот результат разве где-то используется? И почему ей сначала присваивается пустое значение?
Супер
Отлично. Фигурная скобка, открывающая тело функции, пишется на новой строке.
Отлично
Во второй задаче подогнали под ответ, можно сказать. Есть специальная функция, которая берет срез массива.
исправил
Отлично
Всё ок, только вместо $arr2_sliced нужно писать $arr2Sliced. camelCase для имен переменных, и никаких подчеркиваний.
CamelCase? Хорошо!
Да, опечатался
Ну и куда подевались знания из всего что было в предыдущих уроках?
Где типы аргументов функции?
Откуда вот такое определение массива?
Для чего здесь собственная функция сортировки?
Что за пробел после var_dump и перед открывающей скобкой?
Для чего вывод <br> в конце?
А без комментария непонятно?
Отлично
Отлично
Отлично
Вариант 2 стал ужасен после:
никогда так не делайте. Глобальные переменные делают код нечитаемым и непредсказуемым.
Всё что до второго варианта - отличное решение.
Используйте для строк одинарные кавычки.
В остальном отлично!
Всё ок.
Почему выбрали asort а не sort?
1.
2.
3.
Для чего в переменную записываете? Возвращайте сразу результат
Первое задание
Второе задание
Третье задание
Отлично
1)
Почему выбрали rsort, а не sort?
?> - закрывающий тег не нужен
не правильно понял задание, перевернул, закрывающий тег ставлю по привычке.
3)
Для чего это здесь?
2)
Отлично. Почти. Имена переменных всегда пишутся с маленькой буквы.
Отлично!
Закрывающий тег не нужен!
Нет. Нужно взять именно значения из массива. Если в исходном массиве заменить 3 на 33, то и в результат должно попасть 33.
Закрывающий тег не нужен!
Закрывающий тег не нужен!
Всё, исправил, простите забыл указать сортировку от наименьшего к большему )
Теперь отлично
Всё верно
1.
2.
3.
Нашел готовую функцию:
Странно ищете. Почему не нашли sort?
Исправил
asort использовал для удобства дальнейшего использования массива, эту функция не меняет ключи, мне показалось удобнее.
implode ;)
Большое спасибо!
Отлично
Отлично
Отлично
1 задачка
2 задачка
И 3 задача)
Или
Во всех заданиях нужно использовать готовые функции
Да, что то я затупил и задание не прочитал
Доброе утро!
Отлично
Приветствую, сначала все задания я сделал так:
Потом увидел что первые 2 задачи люди делают вообще не так. Я думал по той ссылке есть всё необходимое, оказывается нет. И я переделал первые 2 задачи:
Вы просто не прочитали самую первую строчку в домашнем задании)
Второй вариант отличный.
Как раз и прочитал) Но в ссылке не нашел функций implode() и array_slice(). Думал в ссылке все необходимые функции.
Отлично
Всё отлично, только строки пишутся в одинарных кавычках!
1.
2.
3.
В первом решении не выполнено самое первое требование ДЗ - нужно использовать готовые функции.
Строки пишутся в одинарных кавычках!
Отлично!
implode :)
Отлично
Отлично
implode =)
а так намного проще))
Отлично, только имена переменных в lowerCamelCase, без подчеркиваний
Супер
// 3
https://codingzone.io/problems/5/solution/417
Отлично. В 3-ем задании можно было тоже implode воспользоваться.
В третьем задании нужно было приложить ссылку на решение. В остальном всё ок.
https://codingzone.io/ru/problems/5/solution/741
Отлично! В последней задачке можно было также воспользоваться implode
Задание 1
Задание 2
Задание 3 - https://codingzone.io/problems/5/solution/920
Отлично
1 Задание
2 Задание
3 Задание
https://codingzone.io/problems/5/solution/1560
Для чего SORT_NATURAL в первом задании?
Согласен, не зачем, и в 3-м задании в том числе. Самостоятельно экспериментировал с сортировкой строк с различными флагами, а потом забыл удалить.
1
2
3
https://codingzone.io/problems/5/solution/1658
Почему не просто sort?
На cz смысл в написании алгоритма самостоятельно, без использования готовых функций.
asort стоял первый в списке на сайте оф. документации. По пути наименьшего сопротивления.) А на разницу между ними я обратил внимание.
По cz вы имеете ввиду, что нужно самостоятельным алгоримом заменить функцию array_unique?
Ага
Почему старый синтаксис используете? Почему вместо int стоки?
Почему не просто sort?
Для чего здесь кавычки?
Для чего здесь echo?
От старого синтаксиса постараюсь отучится.
asort сортирует массив и сохраняет ключ, поэтому решил попробовать, просто интересно было можно ли им заменить sort. Результат выражения получился схожим. Поэтому решил его оставить.
По поводу кавычек, это невнимательность моя, признаю как и то что перед var_dump echo написал (уберу его).
P. S. Понимаю что некорректно то что я делаю, но порой чисто из интереса пробую нестандартные пути.
Строки пишутся в одинарных кавычках
3 задачка:
Или все же лучше foreach использовать?
И так и так норм
Привет, первая задача очень простая :)))
Вторая тоже не сложная.
Тут всё ок.
Крайне неоптимальное решение. Не гибкое. Если вдруг в исходном массиве изменится количество элементов или значения чисел, всё надо будет переписывать. Алгоритм должен быть таким, чтобы после изменения входных данных программа продолжала работать. А тут какой-то подгон под ответ.
Да, я уже нашла функцию sort. :))))))
пробел после имени функции не ставится. имя переменной input не подходит, это скорее уже output
Третья задача
Исправила!
Строки пишутся в одинарных кавычках.
Проблема с форматированием. Делайте отступы и переносы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L
Где типы аргументов?
Скобка, открывающая тело функции, пишется на новой строке.
Функциям стоит давать более осмысленные имена.
Первая задача:
Вторая задача:
Третья задача:
Отлично!
А можете оформить переносы? Чтобы код был кодом? Нажмите на карандашик и поправьте, пожалуйста. А потом ответьте мне на этот комментарий. Проверю домашку после этого.
1)
2)
Отлично
Доброго вечера.
А можешь научно-популярно объяснить, как работает isset из решения в третьем задании?
Почитал документацию, и посмотрел, как работает через дебаггер, но до конца логику не пониманию, он проверяет на истинность того, есть ли помещаемое число уже в массиве, или нет? Или из-за отрицания спрашивает, нет ли его там, если нет, значит помещает? Ааааа. Кипит котёл.
Я про это решение.
Он проверяет что значение НЕ NULL. Ну и в случае с массивом проверяет что есть значение по таком ключу и что это значение !== null
Спасибо, стало немного понятнее)
Привет, мой код по задаче https://php.zone/problems/5 прошел все тесты. Посмотрел ваше решение и теперь мне кажется что я написал длинный и трудночитаемый код.
Что скажете?
Ну, много лишнего конечно. Ведь все что нужно - вывести число только один раз.
Почему используется старый синтаксис для массивов?
Проблема с форматированием. Делайте отступы и переносы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L
Отлично
Отлично
Почему не sort? Прочитайте про implode
Спасибо, в телеграмме обсудили тему sort и asort. Тут нужно было просто sort воспользоваться т.к. массив у меня не ассоциативный.
Спасибо за implode удобная функция, о ней не знал.
Не то. Почитайте про slice/splice
Спасибо!
Что-то как-то много всего. Правильный ответ выглядит вот так:
Попробовал 2-мя способами сделать 1 задачу)
тут ок
Добрый день. по 3её задаче уже потом посмотрел решение с isset и понял как работает.
Отлично
Артём, не могли бы вы пояснить своё решение к задаче?
Уникальные числа
На вход дана строка с числами, разделенными пробелами.
Удалите все повторы чисел. Выведите их в любом порядке, разделив пробелами.
Решил по-другому, ваше решение не понимаю.
Берем массив чисел, если число ранее не выводилось, выводим его и сохраняем в массиве напечатанных чисел в качестве ключа.
Точно... в качестве ключа, спасибо!
имена переменных в camelCase!
В остальном ок
Первая
Вторая
Почему не sort?
Во втором задании не понял, почему функция range() считает элементы массива с 1, а не с 0?
Второе неверно. Читайте документацию функции, она вообще другое дело.
Вот, исправил. Но на PHP.net написано, что range — Создаёт массив, содержащий диапазон элементов, в ДЗ написано, что надо получить с помощью одной функции массив, в котором будут элементы исходного с 1-го элемента по 3-й, я же это и сделал получается, только не вывел значение функции в переменную, а результат по факту тот же) Или я чего-то не понимаю)
Нет. Вы сделали фиксированный диапазон чисел. Если числа в исходном массиве поменяются, ваш код окажется не у дел) Алгоритм должен быть универсальным.
SORT_NUMERIC - для чего?
указал, что сравниваю именно числовые элементы
Отлично
второе, сначала подумал нужно применить функцию "range", но потом понял, что не тот функционал
Первое задание:
Второе задание: