В моем php-запросе я получил такой вывод:
{"projects":[{"id":127,"name":"efrat","status":{"id":10,"name":"development","label":"development"},"description":"","enabled":true,"view_state":{"id":10,"name":"public","label":"public"},"access_level":{"id":90,"name":"administrator","label":"administrator"},"custom_fields":[{"id":1,"name":"Customer email","type":"email","default_value":"","possible_values":"","valid_regexp":"","length_min":0,"length_max":50,"access_level_r":{"id":10,"name":"viewer","label":"viewer"},"access_level_rw":{"id":10,"name":"viewer","label":"viewer"},"display_report":true,"display_update":true,"display_resolved":true,"display_closed":true,"require_report":false,"require_update":false,"require_resolved":false,"require_closed":false}],"versions":[],"categories":[{"id":93,"name":"Monitor","project":{"id":0,"name":null}},{"id":31,"name":"Proactive","project":{"id":0,"name":null}},{"id":30,"name":"Project","project":{"id":0,"name":null}},{"id":29,"name":"Support","project":{"id":0,"name":null}}]}]}
после использования метода ‘json_decode’ я получаю это:
«(
[projects] => Array
(
[0] => Array
(
[id] => 127
[name] => myprojectname
[status] => Array
(
[id] => 10
[name] => development
[label] => development
)
[description] =>
[enabled] => 1
[view_state] => Array
(
[id] => 10
[name] => public
[label] => public
)
[access_level] => Array
(
[id] => 90
[name] => administrator
[label] => administrator
)
[custom_fields] => Array
(
[0] => Array
(
[id] => 1
[name] => Customer email
[type] => email
[default_value] =>
[possible_values] =>
[valid_regexp] =>
[length_min] => 0
[length_max] => 50
[access_level_r] => Array
(
[id] => 10
[name] => viewer
[label] => viewer
)
[access_level_rw] => Array
(
[id] => 10
[name] => viewer
[label] => viewer
)
[display_report] => 1
[display_update] => 1
[display_resolved] => 1
[display_closed] => 1
[require_report] =>
[require_update] =>
[require_resolved] =>
[require_closed] =>
)
)
[versions] => Array
(
)
[categories] => Array
(
[0] => Array
(
[id] => 93
[name] => Monitor
[project] => Array
(
[id] => 0
[name] =>
)
)
[1] => Array
(
[id] => 31
[name] => Proactive
[project] => Array
(
[id] => 0
[name] =>
)
)
[2] => Array
(
[id] => 30
[name] => Project
[project] => Array
(
[id] => 0
[name] =>
)
)
[3] => Array
(
[id] => 29
[name] => Support
[project] => Array
(
[id] => 0
[name] =>
)
)
)
)
)
)»
В моем PHP, как я могу освободить значение объекта «name» (результатом должно быть «myprojectname») из этого массива? Я перепробовал много циклов foreach, которые ни к чему не привели.
Спасибо,
Похоже, у вас есть один объект, который при декодировании фактически имеет только один элемент массива. Таким образом, в вашем случае «myprojectname» может быть просто «$ projects [0] [‘ name ’]»
Если много элементов массива, вы могли бы
foreach ($projects as $project) {
echo $project[‘name’];
}
РЕДАКТИРОВАТЬ: Я взял предоставленный объект и json_decoded его сам, он не соответствует элементу json_decoded, представленному OP — на первом изображении показан код для var_dump ‘name’ OP, часть кода также приведена ниже:
$decoded = json_decode($obj);
$projects = $decoded->projects;
$name = $projects[0]->name;
Ваши «проекты» содержат массив ("projects":[{"id":127, ... }]
). Я предполагаю, что массив ‘projects’ может содержать несколько таких объектов ‘project’, как это?
{
"projects":
[
{
"id":127,
"name":"my-project"},
{
"id":128,
"name":"my-other-project"}
]
}
В этом случае вам нужна стрелка для доступа к свойству name, например:
foreach ($projects as $project_object) {
foreach ($project_object as $project) {
echo $project->name . '<br/>';
}
}
РЕДАКТИРОВАТЬ:
Я взял минимальный пример кода OP и получил ожидаемый результат:
Можете ли вы добавить больше деталей в свои фрагменты кода в исходный вопрос или предоставить нам рабочий пример кода?
Есть несколько онлайн-песочниц PHP, которые могут помочь вам в этом. Например: я удалил весь код, который не связан с вашим вопросом, и получил результат, который вы ищете, двумя различными способами:
http://sandbox.onlinephpfunctions.com/code/009c53671fd9545e4fcecfe4b0328974381ee2ce
Также неплохо подытожить все циклы foreach, которые вы уже пробовали, чтобы мы могли убедиться, что вы почти достигли своего собственного решения. Таким образом, мы сможем лучше понять ваш вопрос, и это не позволит нам предлагать решения, которые вы уже использовали.