假设我需要更新下面返回的array中的一个[status]
数组值。
在PHP中,我将把下面返回的数组放入这个变量$taskArray
中
我唯一要做的就是我需要修改的Array项目的[taskid]
,以及我想将其更改为的[status]
的新值。
我正在寻找最有效的方法,可以获取下面的数组,找到与我的[taskid]
匹配的数组,将[status]更改为我的新状态值,然后将完整更新的数组返回到一个变量,这样我就可以将其传递回我的数据库。
根据阵列的设置方式,我真的不确定如何做到这一点,如果能提供任何帮助,我将不胜感激?
基于下面的这个数组,我想把这2个变量基本上传递到一个函数中,让函数进行上面提到的更新,并返回整个更新后的数组。。。
function updateTaskStatus($taskId, $newStatus){
// Contains the Array that is shown below this function
$tasksArray;
// Update $tasksArray [status] with the value of $newStatus
// WHERE $taskId is in the SAME array
// RETURN UPDATED $tasksArray
return $tasksArray;
}
// Calling function above would update the [status] to 'completed
// WHERE [taskid] = 4
updateTaskStatus(4, 'Completed');
Array
(
[0] => Array
(
[taskid] => 3
[name] => sdgsdfgdfg
[description] => dfgsdfgsdfg
[status] => In Progress
[priority] => Low
[type] => Magento
)
[1] => Array
(
[taskid] => 4
[name] => Dfgyrty
[description] => rtyrty
[status] => Open
[priority] => Urgent
[type] => Design
)
[2] => Array
(
[taskid] => 9
[name] => yrgrtyerty
[description] => rtyrt6yerty
[status] => Cancelled
[priority] => Urgent
[type] => Magento
)
[3] => Array
(
[taskid] => 9
[name] => ertgsdftg
[description] => dfgsdfg
[status] => Open
[priority] => Medium
[type] => SEO
)
[4] => Array
(
[taskid] => 30
[name] => fghdfgh
[description] => fghdfgh
[status] => In Progress
[priority] => Low
[type] => SEO
)
[5] => Array
(
[taskid] => 1410858495187
[name] => tyrty
[description] => tyrty
[status] => Open
[priority] => Low
[type] => Other
)
)
如果我理解你的问题,简单的答案是做这样的循环:
function updateTaskStatus($taskId, $newStatus){
global $tasksArray;
foreach($tasksArray as $k => $task)
{
if ($task['taskid'] == $taskId)
{
$tasksArray[$k]['status'] = $newStatus;
break;
}
}
return $tasksArray;
}
注意还有其他解决方案(请参阅php文档中的所有array_*函数)。
我将global
添加到您的代码中,因为否则这将不起作用,但每次都可以避免使用全局。
做这类事情最简单的方法是使用循环。
<?php
function updateTaskStatus($taskId, $newStatus){
// Loop through all the tasks to see if there's a match
foreach ($tasksArray as $id => $task) {
if ($task['taskid'] != $taskId) {
// Mismatch
continue;
}
$tasksArray[$id]['status'] = $newStatus;
}
// RETURN UPDATED $tasksArray
return $tasksArray;
}
你可以这样做:
foreach ($tasksArray as $task)
if ($task['taskid'] == $taskId)
$task['status'] = $newStatus;
将密钥更改为任务id,然后使用类似的东西
function updateTaskStatus($taskId, $newStatus){
$tasksArray[$taskId]['status'] = $newStatus;
}
updateTaskStatus(4, 'Completed');