PHP foreach循环警告非法字符串偏移量

wen*_*nus 0 php arrays foreach

我有一个简单的循环问题.我有这样的数据:

$PRODUCT = [

'title' => 'Blouse',
'lines' => [

    'variants' => [
        [
            'price' => 112.34,
            'options' => [
                'size' => 'small',
                'color' => 'yellow',

            ]
        ],
        [
            'price' => 156.33,
            'options' => [
                'size' => 'small',
                'color' => 'blue',

            ]
        ],
    ],
  ]
Run Code Online (Sandbox Code Playgroud)

我需要创建一个这样的新表:

$options => [
        'size',
        'color'
    ]
Run Code Online (Sandbox Code Playgroud)

我试图'options'在循环中只使用带键的数组,我甚至有我需要的数据,但我有警告:

Warning: Illegal string offset 'options'
Run Code Online (Sandbox Code Playgroud)

我的循环看起来像这样:

$options = [];

foreach ($PRODUCT['lines'] as $variant){
    foreach ($variant as $item) {
      $options[] = $item['options'];
    }
 }
Run Code Online (Sandbox Code Playgroud)

我的错误在哪里?我知道这'price'不是一个数组,但在这种情况下什么没有警告?

Jou*_*uby 5

你错过了数组中的一个级别.试试这个 :

$options = [];

foreach ($PRODUCT['lines']['variants'] as $variant){
    foreach ($variant as $item) {
      $options[] = $item['options'];
    }
 }
Run Code Online (Sandbox Code Playgroud)