我在定位/查找和删除维数组中的对象时遇到了这个小问题。
我正在处理的数组是:
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;
答案 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);