💎
Занимаюсь заказной веб-разработкой. Подписывайтесь на телеграм канал https://t.me/dchengaev ;)

2023-03-04

Задачи. Работа с массивами на языке PHP.

Задание

У нас есть массив:

$arr = array("апельсин", "банан");

Добавьте в конец этого массив еще несколько элементов, чтобы на выходе получилось примерно так:

Array
 (
    [0] => апельсин
    [1] => банан
    [2] => яблоко
    [3] => дыня
 )

Посмотреть ответы

Вариант автора:

Автор не добавил свой вариант решения.

Ответ пользователя

$arr = array("апельсин", "банан");
array_push($arr,"яблоко", "дыня");
print_r($arr);

Ответ пользователя kuraevam89@yandex.ru

$arr[] = "яблоко";
$arr[] = "дыня";

Ответ пользователя info@maxed.pro

<?php
$arr = array("апельсин", "банан");
$arr[] = "яблоко";
$arr[] = "дыня";
print_r($arr);

Задание

У нас есть 2 массива. 

$arr1 = ['first','second'];
$arr2 = [3,4];

Объедините их, чтобы в результате получился примерно такой массив:

Array
(
    [0] => first
    [1] => second
    [2] => 3
    [3] => 4
)

Посмотреть ответы

Вариант автора:

Автор не добавил свой вариант решения.

Ответ пользователя kuraevam89@yandex.ru

$arr3 = [...$arr1, ...$arr2];

Ответ пользователя info@maxed.pro

<?php
$arr1 = ['first','second'];
$arr2 = [3,4];
$arr3 = array_merge($arr1, $arr2);
print_r($arr3);

Задание

Имеется массив:

$arr = ['first','second','third'];

Предположим, что мы не знаем сколько точно элементов в этом массиве, их количество зависит от состояния базы данных.

Нам нужно к последнему элементу такого массива добавит какую либо строку. Например,

$arr = ['first','second','third - последний элемент'];

Посмотреть ответы

Вариант автора:

Автор не добавил свой вариант решения.

Ответ пользователя kuraevam89@yandex.ru

$lastIndexArr = count($arr) - 1;

$arr[$lastIndexArr] = $arr[$lastIndexArr].' - последний элемент';

Ответ пользователя info@maxed.pro

<?php
$arr = ['first','second','third'];
$arr[count($arr) - 1] .= ' - последний элемент';
print_r($arr);

Задание

Имеется массив:

$arr = ['first','second','third'];

Удалите в нем первый элемент 'first'.

Посмотреть ответы

Вариант автора:

Автор не добавил свой вариант решения.

Ответ пользователя kuraevam89@yandex.ru

array_shift($arr);

Ответ пользователя info@maxed.pro

<?php
$arr = ['first','second','third'];
unset($arr[0]);
print_r($arr);

Задание

Имеется массив:

$messages = [1, 5, 3, 3, 7, 3, 1];

Оставьте в нем только уникальные значения.

Посмотреть ответы

Вариант автора:

Автор не добавил свой вариант решения.

Ответ пользователя kuraevam89@yandex.ru

$messages = array_unique($messages);

Ответ пользователя info@maxed.pro

<?php
$messages = [1, 5, 3, 3, 7, 3, 1];
$messages = array_unique($messages);
print_r($messages);

Задание

Имеется массив

$arr = Array(
          Array('laravel','php'),
          Array('codeigniter','php'),
          Array('laravel','php'),
          Array('c++','java')
);
        

Оставьте в нем уникальные значения, чтобы в результате получилось так:

Array
(
    [0] => Array
        (
            [0] => laravel
            [1] => php
        )


    [1] => Array
        (
            [0] => codeigniter
            [1] => php
        )


    [3] => Array
        (
            [0] => c++
            [1] => java
        )


)

Посмотреть ответы

Вариант автора:

Автор не добавил свой вариант решения.

Ответ пользователя sidnev70@outlook.com

<?php

$arr = Array(
Array('laravel','php'),
Array('codeigniter','php'),
Array('laravel','php'),
Array('c++','java')
);

$result = [];
$result[] = array_shift($arr);

while (count($arr)) {
$tmp = array_shift($arr);
// print_r($tmp);
// echo count($arr);
$fl = 1;
foreach ($result as $key => $value) {
if (empty(array_diff($value, $tmp))){
$fl = 0;
break;
}
}
if ($fl == 1){
$result[] = $tmp;
}
}

print_r($result);

Ответ пользователя kuraevam89@yandex.ru

$arr2 = array_values(array_merge(...array_map(function($item) {
return [implode('_', $item) => $item];
}, $arr)));

Ответ пользователя info@maxed.pro

<?php
$arr = Array(
Array('laravel','php'),
Array('codeigniter','php'),
Array('laravel','php'),
Array('c++','java')
);
$serializedArr = array_map('serialize', $arr);
$uniqueSerializedArr = array_unique($serializedArr);
$uniqueArr = array_map('unserialize', $uniqueSerializedArr);
print_r($uniqueArr);

Задание

Имеется массив

$arr = [1,7,6,4];

Проверьте, есть ли в нем, например, цифра 7. Если цифра имеется, выведите сообщение, что "элемент найден", иначе "элемент НЕ найден".

Посмотреть ответы

Вариант автора:

Автор не добавил свой вариант решения.

Ответ пользователя kuraevam89@yandex.ru

if (in_array(7, $arr)) {
print_r("элемент найден");
} else {
print_r("лемент НЕ найден");
}

Ответ пользователя info@maxed.pro

<?php
$arr = [1,7,6,4];
$res = array_search(7, $arr);
print_r(($res) ? "элемент найден" : "элемент НЕ найден");

Задание

Как в PHP 7 и выше вместо оператора isset проверить существование чего-либо и если это не существует, вернуть какое-то значение по умолчанию. 

Посмотреть ответы

Вариант автора:

Автор не добавил свой вариант решения.

Ответ пользователя info@maxed.pro

<?php
$value = $var ?? 'default_value';
echo $value;

Задание

Имеется массив:

$arr = [1,7,6,4]

Отсортируйте этот массив по возрастанию и убыванию. Должно получиться.

Array
 (
    [0] => 1
    [3] => 4
    [2] => 6
    [1] => 7
 )
и
Array
 (
    [0] => 7
    [1] => 6
    [2] => 4
    [3] => 1
 )

Посмотреть ответы

Вариант автора:

Автор не добавил свой вариант решения.

Ответ пользователя info@maxed.pro

<?php
$arr = [1,7,6,4];
sort($arr);
print_r($arr);
rsort($arr);
print_r($arr);

Задание

Попробуйте отсортировать данный массив по возрастанию или убыванию по датам.

$arr = [
    ["meta" => ["2019-12-28"]],
    ["meta" => ["2020-01-05"]],
    ["meta" => ["2020-01-12"]],
 ];

Посмотреть ответы

Вариант автора:

Автор не добавил свой вариант решения.

Ответ пользователя info@maxed.pro

<?php
$arr = [
["meta" => ["2019-12-28"]],
["meta" => ["2020-01-05"]],
["meta" => ["2020-01-12"]],
];
usort($arr, function($a, $b) {
return strtotime($a['meta'][0]) <=> strtotime($b['meta'][0]);
});
print_r($arr);
usort($arr, function($a, $b) {
return strtotime($b['meta'][0]) <=> strtotime($a['meta'][0]);
});
print_r($arr);

Задание

Найдите значению ключа массива, у которого значение равно green.

$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');

Посмотреть ответы

Вариант автора:

Автор не добавил свой вариант решения.

Ответ пользователя info@maxed.pro

<?php
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
print_r(array_search("green", $array));

Задание

Найдите ключ в этом массиве, у которого значение uid 40489

$userdb=Array
 (
    (0) => Array
        (
            (uid) => '100',
            (name) => 'Sandra Shush',
            (url) => 'urlof100'
        ),
 
    (1) => Array
        (
            (uid) => '5465',
            (name) => 'Stefanie Mcmohn',
            (pic_square) => 'urlof100'
        ),
 
    (2) => Array
        (
            (uid) => '40489',
            (name) => 'Michael',
            (pic_square) => 'urlof40489'
        )
 );

Посмотреть ответы

Вариант автора:

Автор не добавил свой вариант решения.

Ответ пользователя info@maxed.pro

<?php
function find_current_user($userDB, $uid): int|null
{
foreach ($userDB as $key => $value)
{
if ($value['uid'] == $uid)
{
return $key;
}
}
return null;
}

$userDB = [
[
'uid' => '100',
'name' => 'Sandra Shush',
'url' => 'urlof100'
],
[
'uid' => '5465',
'name' => 'Stefanie Mcmohn',
'pic_square' => 'urlof100'
],
[
'uid' => '40489',
'name' => 'Michael',
'pic_square' => 'urlof40489'
]
];
print_r(find_current_user($userDB, '40489') ?? "Can't found this user!");
💎
Занимаюсь заказной веб-разработкой. Подписывайтесь на телеграм канал https://t.me/dchengaev ;)