合并两个对象数组并获取唯一对象PHP
这里我需要一些关于两个数组合并的帮助。合并两个对象数组并获取唯一对象PHP
这是示例代码我有
$tasks = array();
$task_user = new Task_User;
$task_user->setUserId($this->session_data['userId']);
$user_taskIds = $this->getUserTasks($task_user);
foreach ($user_taskIds as $row) {
$task = new Task;
// $task->setBranchId($branch_id);
$task->setTaskId($row->getTaskId());
$tasks[] = $this->getTask($task);
}
echo "<pre>";
print_r($tasks);
$pageData['userTasks'] = $tasks;
$task = new Task;
// $task->setBranchId($branch_id);
$task->setCreated($this->session_data['userId']);
$tasks1 = $this->getBranchTasks($task);
if (!empty($tasks1[0]))
{
$pageData['userTasks'] = $tasks1;
}
print_r($tasks1);
print_r($pageData['userTasks']);
$这 - >负载>视图( '家',$ pageData);
OUTPUT:
Array
(
[0] => Task Object
(
[task_id:Task:private] => 22
[service_id:Task:private] => 1
[branch_id:Task:private] => 1
[customer_id:Task:private] => 121
[lead_id:Task:private] => 0
[name:Task:private] => YTY0000022
)
[1] => Task Object
(
[task_id:Task:private] => 24
[service_id:Task:private] => 1
[branch_id:Task:private] => 1
[customer_id:Task:private] => 1046
[lead_id:Task:private] => 0
[name:Task:private] => YTY0000024
)
)
Array
(
[0] => Task Object
(
[task_id:Task:private] => 9
[service_id:Task:private] => 1
[branch_id:Task:private] => 1
[customer_id:Task:private] => 599
[lead_id:Task:private] => 0
[name:Task:private] => YTY0000009
)
[1] => Task Object
(
[task_id:Task:private] => 10
[service_id:Task:private] => 1
[branch_id:Task:private] => 1
[customer_id:Task:private] => 313
[lead_id:Task:private] => 0
[name:Task:private] => YTY0000010
)
)
Array
(
[0] => Task Object
(
[task_id:Task:private] => 9
[service_id:Task:private] => 1
[branch_id:Task:private] => 1
[customer_id:Task:private] => 599
[lead_id:Task:private] => 0
[name:Task:private] => YTY0000009
)
[1] => Task Object
(
[task_id:Task:private] => 10
[service_id:Task:private] => 1
[branch_id:Task:private] => 1
[customer_id:Task:private] => 313
[lead_id:Task:private] => 0
[name:Task:private] => YTY0000010
)
)
所以,最后我需要的对象的两个阵列应与唯一对象进行组合,并将其传递到一个阵列。我从最近6个小时试过了。但我无法得到它。请帮助我 在此先感谢。
在一些简短的测试中,它看起来比in_array适用于对象。但是如果没有揭露它们,它将无法观察私有变量,这是我留给你的一个练习。
$tasks2 = [];
foreach($tasks as $t){
if(!in_array($t,$tasks2){
array_push($tasks2,$t);
}
}
如果您看到代码,我将$ tasks和$ tasks1推入单个数组中。然后重写 – Ravi
否您没有。你完全替换了数组'$ pageData ['userTasks'] = $ tasks1;' –
替换该行 ...
if (!empty($tasks1[0]))
{
$pageData['userTasks'] = $tasks1;
}
...
到 ...
if (!empty($tasks1[0]))
{
$pageData['userTasks'] = array_replace($pageData['userTasks'], $tasks1);
}
...
如果我使用这个 – Ravi
你告诉我会发生什么。你试过了吗? –
你可以修改任务类?如果这样安排它告诉你的ID。另一种获取私有数据的方法是“序列化”任务并将其从字符串中挖掘出来? –
如果它们是相同的对象,那么[spl_object_hash - 返回给定对象的哈希ID](http://php.net/manual/en/function.spl-object-hash.php)可能有用吗? –