Я пытаюсь получить некоторые данные из определенного API.Если я выполню тестовый запуск на странице API, мне будет возвращен этот URL в качестве ответа, поэтому я могу получить оттуда данные API:
(только фрагмент категории)
&categories=1%2C2%2C3%2C4%2C5%2C6%2C7%2C8%2C9%2C10%2C11%2C12"
В основном это означает: 1,2,3,4,5,6,7,8,9,10,11,12
У меня есть массив категорий, также с 12 элементами.
Массив выглядит следующим образом:
dd($this->categories) outputs:
array:12 [▼
0 => "1"
1 => "2"
2 => "3"
3 => "4"
4 => "5"
5 => "6"
6 => "7"
7 => "8"
8 => "9"
9 => "10"
10 => "11"
11 => "12"
]
, чтобы сделать запрос API от моей системы, URL, который я вызываю, должен иметь тот же стандарт, что и из теста API.Тем не менее, вот так выглядит мой URL (только фрагмент категории)
&categories=%5B%221%22%2C%222%22%2C%223%22%2C%224%22%2C%225%22%2C%226%22%2C%227%22%2C%228%22%2C%229%22%2C%2210%22%2C%2211%22%2C%2212%22%5D
фрагмент кода:
$categories = "&categories=" . rawurlencode(json_encode($this->categories));
Как видите, фрагмент URL теста API намного короче, чеммой.Я думаю, что из-за кодировки?
Я попытался решить эту проблему, сначала преобразовав массив в json, и применил к нему метод rawurlencode.Но это не решило проблему для меня.Мне нужно "преобразовать" URL таким же образом, API делает это.
У кого-нибудь есть идеи, как мне решить эту проблему?
Что я нашел:
Я нашел этот фрагмент, который почти решил мою проблему
$categories = "&categories=" . http_build_query($this->categories, null, "%2C", PHP_QUERY_RFC1738);
Результат выглядит следующим образом:
&categories=0=1%2C1=2%2C2=3%2C3=4%2C4=5%2C5=6%2C6=7%2C7=8%2C8=9%2C9=10%2C10=11%2C11=12
Но я действительно не знаю, откуда в начале приходит ne 0 и почему после каждого элемента массива всегда есть символ "="