У меня есть строка данных, отформатированная так:
[{"pr_a_w":"10","pr_a_we":"10","pr_c_w":"10","pr_c_we":"10"},{"pr_a_w":"20","pr_a_we":"20","pr_c_w":"20","pr_c_we":"20"},{"pr_a_w":"111","pr_a_we":"11","pr_c_w":"111","pr_c_we":"111"}]
Строка не имеет никаких индексов / чисел, как у обычного массива, и мне трудно извлечь отдельные значения, например, с обычным массивом я мог бы использовать:
$string[0]["pr_a_w"]
Чтобы получить первый экземпляр «pr_a_w», и я мог бы использовать:
$string[1]["pr_a_w"]
Чтобы получить второй экземпляр и т. Д.
Можно ли получить отдельные значения из этой строки в зависимости от их количества?
То, что у вас есть, является действительным JSON (сериализованный массив объектов), чтобы вы могли использовать json_decode
чтобы преобразовать сериализованные данные в собственный массив PHP:
$array = json_decode('[{"pr_a_w":"10","pr_a_we":"10","pr_c_w":"10","pr_c_we":"10"},{"pr_a_w":"20","pr_a_we":"20","pr_c_w":"20","pr_c_we":"20"},{"pr_a_w":"111","pr_a_we":"11","pr_c_w":"111","pr_c_we":"111"}]',true);
$array
затем позволит вам сделать именно то, что вы заявили, что вы хотели бы сделать выше.
$array[0]["pr_a_w"]; // will give you 10
$array[1]["pr_a_w"]; // will give you 10
Попробуйте вот так, нет необходимости доступа с индексом массива. Вы получите ошибку, если вы получите неверный индекс.
$json_arr= json_decode('[{"pr_a_w":"10","pr_a_we":"10","pr_c_w":"10","pr_c_we":"10"},{"pr_a_w":"20","pr_a_we":"20","pr_c_w":"20","pr_c_we":"20"},{"pr_a_w":"111","pr_a_we":"11","pr_c_w":"111","pr_c_we":"111"}]',true);
foreach($json_arr as $row){
echo $row['pr_a_w']."<br>";
}