Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Активные темы » Простенький вопрос по PHP

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Открыть новую тему     Написать ответ в эту тему

GEGEMON



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii - пост
Цитата:
ну посмотрите основы языка в любом учебнике
Pplhfdcndeqnt (автонабор на Зд сработал)  Здесь у меня учебник
Я смотрел  - епнесьсся какие дьяволы примеры пишут. Я как-то изначально сам начал изощерятся, ну и вот - сам себя перехитрил.
Вот например _https://web-answers.ru/php/kak-vstavit-ssylku-href-v-kod-php.html
 
Вам - спасибо.

Всего записей: 2820 | Зарегистр. 07-02-2006 | Отправлено: 01:21 04-08-2019 | Исправлено: GEGEMON, 01:24 04-08-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GEGEMON
если у вас ссылка не подразумевает динамику, которую выполняет php код, то и не нужно ее создавать с помощью php

Всего записей: 15115 | Зарегистр. 20-09-2014 | Отправлено: 01:27 04-08-2019
Kaber



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Дан массив:

Код:
$products = [
    0 = > [
        'feature' => [
            3  = > "Синий",
            45 = > "Большой",
            2  = > "Н дорогой",
            11 = > "Популярный",
            99 = > "Полосатый"
        ]
    ]
    1 = > [
        'feature' => [
            132  = > "Синий",
            45 = > "Маленький",
            2  = > "Н дорогой",
            11 = > "Популярный"
        ]
    ]
    2 = > [
        'feature' => [
            45 = > "Средний",
            2  = > "Дорогой",
            11 = > "Популярный"
        ]
    ]
]

Просьба подсказать, как из этого массивы удалить не совпадающие ключи?  Чтобы на выходе получилось:

Код:
$result = [
    0 = > [
        'feature' => [
            45 = > "Большой",
            2  = > "Н дорогой",
            11 = > "Популярный",
        ]
    ]
    1 = > [
        'feature' => [
            45 = > "Маленький",
            2  = > "Н дорогой",
            11 = > "Популярный"
        ]
    ]
    2 = > [
        'feature' => [
            45 = > "Средний",
            2  = > "Дорогой",
            11 = > "Популярный"
        ]
    ]
]

Всего записей: 1356 | Зарегистр. 14-03-2014 | Отправлено: 17:35 23-11-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kaber
array_intersect_key
попарно получаем общие ключи, все остальное удаляем.

Всего записей: 15115 | Зарегистр. 20-09-2014 | Отправлено: 22:31 23-11-2019
Kaber



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Спс, а как сделать это в цикле? Ведь по сути длина массива не известна? Башка не варит уже...

Всего записей: 1356 | Зарегистр. 14-03-2014 | Отправлено: 23:23 23-11-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kaber

Цитата:
Ведь по сути длина массива не известна?

и что мешает определить размер через функцию count?
 

Цитата:
а как сделать это в цикле?

например так, не совсем оптимально

Код:
for($i = 0; $i < count($products) - 1; $i++)
{
    $keys = array_intersect_key($products[$i]['feature'], $products[$i + 1]['feature']);
 
    foreach(array_diff_key($products[$i]['feature'], $keys) as $key => $ar)
    {
        unset($products[$i]['feature'][$key]);
        unset($products[$i + 1]['feature'][$key]);
    }
}

Всего записей: 15115 | Зарегистр. 20-09-2014 | Отправлено: 23:38 23-11-2019
Kaber



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Этот код не заработал, но зато нашел прям то что надо:
Сравнение-массивов-в-цикле
Прям как раз мой случай)
Еще раз спасибо!

Всего записей: 1356 | Зарегистр. 14-03-2014 | Отправлено: 01:03 24-11-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kaber

Цитата:
Этот код не заработал

значит вы что то не так написали - я проверял и все работало.
можно написать и короче.
 

Код:
for($i = 0; $i < count($products) - 1; $i++)
{
    $products[$i]['feature'] = array_intersect_key($products[$i]['feature'], $products[$i + 1]['feature']);
}

 
результат

Цитата:
Array
(
    [0] => Array
        (
            [feature] => Array
                (
                    [45] => Большой
                    [2] => Н дорогой
                    [11] => Популярный
                )
 
        )
 
    [1] => Array
        (
            [feature] => Array
                (
                    [45] => Маленький
                    [2] => Н дорогой
                    [11] => Популярный
                )
 
        )
 
    [2] => Array
        (
            [feature] => Array
                (
                    [45] => Средний
                    [2] => Дорогой
                    [11] => Популярный
                )
 
        )
 
)

Всего записей: 15115 | Зарегистр. 20-09-2014 | Отправлено: 01:09 24-11-2019 | Исправлено: Mavrikii, 01:12 24-11-2019
usertum



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!
 
Подскажите пожалуйста, как через PHP CURL отправить данный запрос PUT.
 
PUT /api/tickets/{id}
 
{
  "id": 123,
  "title": "Help me!",
  "group": "Users",
  "state": "open",
  "priority": "3 high",
  "article": {
    "subject": "some subject of update",
    "body": "some message of update"
  },
  ...
}
 
Спасибо!

Всего записей: 471 | Зарегистр. 01-07-2008 | Отправлено: 11:50 02-02-2020 | Исправлено: usertum, 15:44 02-02-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
usertum

Код:
$data = (object)[
  "id" => 123,
  "title" => "Help me!",
  "group" => "Users",
  "state" => "open",
  "priority" => "3 high",
  "article" => (object) [
    "subject" => "some subject of update",
    "body" => "some message of update"
  ]
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
 
$response = curl_exec($ch);
 
if (!$response)  
{
    return false;
}

Всего записей: 15115 | Зарегистр. 20-09-2014 | Отправлено: 20:30 02-02-2020
Kaber



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужна помощь, как из этого массива
Получить все 'id' в одномерный массив?
 
Нахожусь на этапе рекурсивной функции:

Код:
 
function iterate(array $array)
{    
    $result = [];
 
    foreach ($array as $item)
    {
        if (!$item['children'])
            $result[] = $item['id'];
        else  
            iterate($item['children']);
    }
 
    return $result;
}
 

а как полученные массивы объединить в итоге в один?
Mavrikii
Огромное спасибо, в очередной раз!

Всего записей: 1356 | Зарегистр. 14-03-2014 | Отправлено: 16:33 03-02-2020 | Исправлено: Kaber, 20:09 03-02-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kaber

Цитата:
а как полученные массивы объединить в итоге в один?


Цитата:
iterate($item['children']);

ну возвращаете вы массив

Цитата:
return $result;

но куда? результат функции же ничему не присваивается.
 

Код:
$result = array_merge($result, iterate($item['children']));


Всего записей: 15115 | Зарегистр. 20-09-2014 | Отправлено: 19:44 03-02-2020 | Исправлено: Mavrikii, 19:51 03-02-2020
Kaber



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую, поправил тот скрипт:

Цитата:
 
function iterate(array $array)
{    
    $result = [];
 
    foreach ($array as $item)
    {
        $result[] = $item['id'];
        if ($item['children'])
            $result = array_merge($result, iterate($item['children']));
    }
 
    return $result;
}
 

а можно совсем обнаглеть и поинтересоваться - как контролировать уровень вложенности:
 
function iterate(array $array, int $maxLevel = 2) ...
PS: огромное спасибо - все получилось

Всего записей: 1356 | Зарегистр. 14-03-2014 | Отправлено: 15:59 04-02-2020 | Исправлено: Kaber, 21:43 04-02-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kaber
передаем $level = 0, и увеличиваем его при каждой глубине итерации.
либо передаем максимальный и уменьшаем..
 
function iterate(array $array, int $maxLevel = 2, $level = 0) {
...
   iterate($item['children'], $maxLevel, $level + 1);
...
}
 
или  
function iterate(array $array, int $maxLevel = 2) {
...
   iterate($item['children'], $maxLevel - 1);
...
}

Всего записей: 15115 | Зарегистр. 20-09-2014 | Отправлено: 20:38 04-02-2020
victoriabonya1978

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Создать файл Новости.php.  
И из этого файла сделать перессылку на frame.php
Всё просто

Всего записей: 11 | Зарегистр. 25-02-2020 | Отправлено: 17:37 25-02-2020
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть форум. Поменяли движок. Cтарые ссылки теперь не работают. Есть несколько важных ссылок, по запросу которых нужно делать переход на новые.
 
Примеры:
Было хттпс://сайт.ру/forum/viewtopic.php?id=381 стало хттпс://сайт.ру/forum/index.php?topic=381
Было хттпс://сайт.ру/forum/viewtopic.php?id=539 стало хттпс://сайт.ру/forum/index.php?topic=539
 
Как это проще всего реализовать?

Всего записей: 10501 | Зарегистр. 05-02-2003 | Отправлено: 14:19 26-04-2020 | Исправлено: V0lt, 14:19 26-04-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
V0lt
Либо mod_rewrite: документация, готовые решения, вопросы
Либо в viiewtopic.php смотрим $_GET['id'] и перекидываем если нужно используя функцию header в php

Всего записей: 15115 | Зарегистр. 20-09-2014 | Отправлено: 14:50 26-04-2020 | Исправлено: Mavrikii, 14:50 26-04-2020
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
Либо в viiewtopic.php смотрим $_GET['id'] и перекидываем если нужно используя функцию header в php

А можно пример такого viewtopic.php? Пожалуйста.

Всего записей: 10501 | Зарегистр. 05-02-2003 | Отправлено: 14:54 26-04-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
V0lt

Цитата:
А можно пример такого viewtopic.php?

не знаю содержимоего, но просто в начале (после <?php) делаете

Код:
$arr = [381, 539];
$id = isset($_GET['id']) ? intval($_GET['id']) : 0;
if (in_array($id, $arr)) {
   header('Location: /forum/index.php?topic=' . $id, true, 301);
   exit;
}

это если только для некоторых id, если же для всех, то убрать проверку в массиве, убрать условие if

Всего записей: 15115 | Зарегистр. 20-09-2014 | Отправлено: 22:42 26-04-2020 | Исправлено: Mavrikii, 22:48 26-04-2020
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Спасибо. Мы уже сделали что-то похожее, но забыли уточнить код HTTP 301.

Всего записей: 10501 | Зарегистр. 05-02-2003 | Отправлено: 09:58 27-04-2020
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Компьютерный форум Ru.Board » Интернет » Web-программирование » Активные темы » Простенький вопрос по PHP


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru