在维度数组PHP

时间:2018-02-02 21:54:23

标签: php arrays laravel multidimensional-array

我在定位/查找和删除维数组中的对象时遇到了这个小问题。

我正在处理的数组是:

array:2 [▼
    0 => array:1 [▼
       "subject" => array:2 [▼
           "name" => "history"
           "level" => "hl"
    ]
]
    1 => array:1 [▼
        "subject" => array:2 [▼
            "name" => "french"
            "level" => "hl"
        ]
    ]
]

这包含一个主题对象,其中包含主题和级别的名称。首先,我无法找到具有名称的主题。我试过这个无济于事:

$test = array_search('history', $user_subjects);

我猜我没有正确定位维数组。

此外,用户应该能够删除具有主题名称的主题。例如,如果用户指定历史记录'我想删除与历史有关的对象:

{
    "subject": {
        "name": "history",
        "level": "hl"
    }
},

无论如何使用其名称找到主题并删除包含该名称的对象?

编辑: 我从我的数据库中获取数组:

//Get the users' chosen subject to delete
$input = $subject;

//Laravel User Model
$user = Auth::user();

//Get the user subject array
$user_subjects = $user->subjects;

1 个答案:

答案 0 :(得分:3)

<?php

$json =<<<JSON
[
{
    "subject": {
        "name": "history",
        "level": "hl"
    }
},
{
    "subject": {
        "name": "french",
        "level": "hl"
    }
}
]
JSON;

$data = json_decode($json, TRUE);

foreach($data as $key => $value)
    if($value['subject']['name'] == 'history')
        unset($data[$key]);

var_export($data);

输出:

array (
  1 => 
  array (
    'subject' => 
    array (
      'name' => 'french',
      'level' => 'hl',
    ),
  ),
)

如果需要,请回到JSON:

$json = json_encode(array_values($data), JSON_PRETTY_PRINT);