#php #arrays #json #laravel #foreach
#php #массивы #json #laravel #foreach
Вопрос:
Я получаю данные из файла json веб-сайта.
Это пример данных json из URL.
Array
(
[1] => TEXT1
[2] => Array
(
[0] => Array
(
[sample1] => text1
[sample2] => text2
)
)
)
Я пробовал с этим кодом.
$json = file_get_contents('http://www.example.com/file.json');
$datas = json_decode($json,true);
foreach ($datas as $key => $row) {
$data[] = $row;
//unset($tempData[1])
foreach ($datas as $key2 => $row1) {
$data1[] = $row1;
unset($data1[0]);
}
}
print_r($data1); exit;
Я хочу получить данные первого массива, который является TEXT1, и данные другого массива, sample1 и sample2
Комментарии:
1. TEXT1 — это значение! sample1 и sample2 являются ключами массива assoc?? Может быть, если вы покажете нам, что вы пытаетесь получить, мы могли бы лучше понять вопрос
2. И в чем проблема с данным кодом? Что-нибудь не работает? Если это так, что вы пытались сделать, чтобы это работало?
Ответ №1:
просто делюсь своим ответом на мой вопрос и сейчас он работает.
foreach ($datas as $row) {
$tempData = $row;
}
$json = json_encode($tempData);
$array = json_decode($json, true);
$lastArray = [];
foreach ($array as $key => $row1){
$lastArray[$key] = $row1;
}
Ответ №2:
Просто вы можете извлечь данные в квадратных скобках в соответствии с их индексом внутри массива.
вы можете прочитать об этом здесь:https://www.w3schools.com/php/php_arrays.asp
и для доступа к нужным индексам вот код
$json = file_get_contents('http://www.example.com/file.json');
$data = json_decode($json,true);
$data[1] // TEXT1
$data[2][0]['sample1'] // sample1
$data[2][0]['sample2'] // sample1
Для динамического получения данных вы можете использовать рекурсивный метод
$json = file_get_contents('http://www.example.com/file.json');
$data = json_decode($json,true);
$newData = new RecursiveIteratorIterator(new RecursiveArrayIterator($data)); // Standard PHP Library (SPL)
print_r($newData);
Удачи,