Php 如何在没有数组键的情况下打印数组值
我正在使用核心PHP为产品列表使用JSON输出的API,这里我需要在输出中进行一些更正。我只想要数组键中的“body”、“dish”和“dish_details”,不想显示产品id的18、26等。。作为数组键 如果我从循环中删除[$nid],那么它只打印最后的产品详细信息 请参见下面的“我的代码”:Php 如何在没有数组键的情况下打印数组值,php,arrays,api,foreach,drupal-7,Php,Arrays,Api,Foreach,Drupal 7,我正在使用核心PHP为产品列表使用JSON输出的API,这里我需要在输出中进行一些更正。我只想要数组键中的“body”、“dish”和“dish_details”,不想显示产品id的18、26等。。作为数组键 如果我从循环中删除[$nid],那么它只打印最后的产品详细信息 请参见下面的“我的代码”: foreach ($nodes as $nid => $node) { $output['dishes'][$nid]['dish_details']['dish_title'] =
foreach ($nodes as $nid => $node) {
$output['dishes'][$nid]['dish_details']['dish_title'] = $node->title;
$output['dishes'][$nid]['dish_details']['dish_image'] = $node->field_recipe_entities[$node->field_recipe]->field_recipe_image_url;
$output['dishes'][$nid]['dish_details']['dish_price'] = $node->field_recipe_entities[$node->field_recipe]->commerce_price_formatted;
$output['dishes'][$nid]['dish_details']['dish_rating'] = $node->rating;
$output['dishes'][$nid]['dish_details']['dish_desc'] = $node->desc;
$output['dishes'][$nid]['dish_details']['dish_type'] = $node->type;
$output['dishes'][$nid]['dish_details']['dish_location'] = $node->location;
}
$return = new stdClass();
$return->body = $output;
$return->message = "Dish list retrieved successfully.";
$return->error = 'nil';
$return->status = 200;
并查看我的输出:
{
"body":{
"dishes":{
"18":{
"dish_details":{
"dish_id":"18",
"product_id":"25",
"dish_title":"Cogo Laoreet Roto",
"dish_image":"http://localhost/drupal739/sites/default/files/dish_images/ima7070.tmp.png",
"dish_price":"189.53 INR",
"dish_rating":"",
"dish_desc":{
"value":"Capto luctus nobis oppeto pagus torqueo veniam. Dolore eros hendrerit. Consectetuer genitus iaceo quia sed. Caecus commoveo dignissim elit melior modo refoveo tego vicis.\n\n",
"summary":null,
"format":"full_html",
"safe_value":"<p>Capto luctus nobis oppeto pagus torqueo veniam. Consectetuer genitus iaceo quia sed. Caecus commoveo dignissim elit melior modo refoveo tego vicis.</p>\n",
"safe_summary":""
},
"dish_type":"",
"dish_location":""
}
},
"26":{
"dish_details":{
"dish_id":"26",
"product_id":"8",
"dish_title":"Obruo Quibus",
"dish_image":null,
"dish_price":"500.00 INR",
"dish_rating":"",
"dish_desc":{
"value":"Amet aptent brevitas caecus commoveo consequat populus si. Distineo dolor esca gemino importunus metuo paratus tincidunt wisi.\n\n",
"summary":null,
"format":"full_html",
"safe_value":"<p>Amet aptent brevitas caecus commoveo consequat populus si. Distineo dolor esca gemino importunus metuo paratus tincidunt wisi.</p>\n",
"safe_summary":""
},
"dish_type":"",
"dish_location":""
}
}
}
}
}
任何人都有任何解决方案,请在此共享。实际上,您正在迭代foreach,您需要为每个节点提供索引,以便它们不会覆盖值 您是在数组的开头还是在数组的中间指定索引
$ouput[]['dishes']['anotherindex']['title'] = value;
它将打印类似于
0 : {
"dishes" : {
"anotherindex" : {
"title" : {
values here
如果您使用的是PHP 5.5,并且希望搜索特定元素,则可以使用以下内容,而无需循环:
//If 18 is one of the dishes key
$key = array_search('18', array_column($data['body'], 'dishes'));
if ($key !== false) {
//Do something with that array segment
var_dump($data['body'][$key]);
}
这是json格式吗??我怀疑。是的,它的JSON格式输出只有我认为这应该打印一些像dish:{dish_细节:{dish_标题{这里的对象值是的,我想这样打印是的,但只打印最后一个循环值..我需要一个loop@Bharathi06实际上,您正在重写键值,并且只得到最后一行。。