Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在没有数组键的情况下打印数组值_Php_Arrays_Api_Foreach_Drupal 7 - Fatal编程技术网

Php 如何在没有数组键的情况下打印数组值

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'] =

我正在使用核心PHP为产品列表使用JSON输出的API,这里我需要在输出中进行一些更正。我只想要数组键中的“body”、“dish”和“dish_details”,不想显示产品id的18、26等。。作为数组键

如果我从循环中删除[$nid],那么它只打印最后的产品详细信息

请参见下面的“我的代码”:

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实际上,您正在重写键值,并且只得到最后一行。。