如何从数组中提取每个项目? laravel / PHP

时间:2016-03-06 08:10:06

标签: php arrays sorting laravel laravel-5.2

我在数组中有50个项目,如下所示:

     array:50 [▼
      0 => {#253 ▼
        +"message": "message_1"
        +"created_time": {#254 ▼
          +"date": "2016-03-03 07:54:05.000000"
          +"timezone_type": 1
          +"timezone": "+00:00"
        }
        +"id": "167633226631991_1051771021551536"
      }
      1 => {#255 ▼
        +"message": "message_2"
        +"created_time": {#256 ▼
          +"date": "2016-03-02 13:35:26.000000"
          +"timezone_type": 1
          +"timezone": "+00:00"
        }
        +"id": "167633226631991_1051313571597281"
      }
    ]

我需要获取数组中的每个变量。但我一直收到一个错误:

Undefined property: stdClass::$message

我不确定我想念的是什么:

     foreach ($posts as $post) {
            $test = array('message' => $post->message );
     }

以及

$a = -1;

$alpha = 0;

$omega = count($posts);

$empty_array = array();

foreach (range($alpha,$omega) as $i) {
  ++$a;
  $test = $posts[$a]->message;
  array_push($empty_array, $test);
  }

但是我得到了同样的错误。我正在使用laravel 5.2。

更新: 该阵列来自facebook的图形API。我正在使用:

转换json格式
$posts = json_decode($userNode['posts']);

执行此操作,然后按上述方式显示array:50

1 个答案:

答案 0 :(得分:2)

由于数组是一个对象数组,因此在键入$post->message时正确引用它。执行$post['message']将不起作用,因为它不是数组数组。

我认为Undefined property: stdClass::$message错误即将发生,因为$posts数组中的某些对象有一个空的+message或一个不存在的+message

处理此问题的最佳方法是使用isset()。但是,您还需要将$test更改为$test[],以防止它在每次循环时被覆盖。

代码:

    foreach ($posts as $post) {
        isset($post->message) ? $test[] = array('message' => $post->message ) : null;
    }

之后,dd($test)将为您提供一个包含消息的数组数组。

如果你真的只想要一个简单的消息数组,那么就这样做:

    foreach ($posts as $post) {
        isset($post->message) ? $test[] = $post->message : null;
    }