【发布时间】:2019-12-19 09:31:29
【问题描述】:
我有两个数组,每个数组都包含一组对象
$input = [
(object)[
'id' => 2,
'number' => 54523,
'date' => '2019-12-17',
'book_for' => 'tttt',
'subject' => 'tttt',
'content' => 'ttt',
'language' => 'Arabic',
'cpfor' => 'tt',
'book_key' => '2WHae',
'note' => 'ttt',
'type' => 'Internal',
'pid' => 2,
'bookid' => 2,
'process' => 'STA',
],
];
第二个数组是
$answers = [
(object)[
'aid' => 1,
'a_number' => 0,
'answer_of' => 1,
'answer_date' => '2019-12-17 00:00:00',
'answer_for' => 'xcc',
'answer_subject' => 'DSF',
'answer_content' => 'FSD',
'language' => '',
'cpfor' => 'WE',
'note' => 'EWWE',
],
(object)[
'aid' => 2,
'a_number' => 0,
'answer_of' => 2,
'answer_date' => '2019-12-19 00:00:00',
'answer_for' => 'answer for tt',
'answer_subject' => 'answer for tt',
'answer_content' => 'answer for tt',
'language' => 'Arabic',
'cpfor' => 'answer for ttvv',
'note' => 'answer for tt',
],
];
我想循环并比较第一个 array 中的 id 键的值与第二个 array 中的 answer_of 键的值,如果 id 与 answer_of 不同,则返回此对象否则如果 id 在第二个数组中不存在,则忽略其他意思(answer_of)返回具有所有键和值的对象,否则忽略
我尝试了下面的函数,但甚至得到那些存在于第二个数组中的函数
function unanswered2($array1, $array2)
{
if (!(empty($array2))) {
$unanswered_arrays = [];
foreach ($array1 as $b) {
foreach ($array2 as $a) {
if ($b->bookid != $a->answer_of) {
array_push($unanswered_arrays, (object)$b);
}
}
}
return $unanswered_arrays;
}
return $array1;
}
任何人都可以告诉我哪里有错误或任何建议
结果是
$result=unanswered2($input,$answers);
$result= [
(object)[
'id' => 2,
'number' => 54523,
'date' => '2019-12-17',
'book_for' => 'tttt',
'subject' => 'tttt',
'content' => 'ttt',
'language' => 'Arabic',
'cpfor' => 'tt',
'book_key' => '2WHae',
'note' => 'ttt',
'type' => 'Internal',
'pid' => 2,
'bookid' => 2,
'process' => 'STA',
],
];
它应该忽略它而不返回
【问题讨论】:
-
你当前的输出是多少?什么是预期的输出 ?请您使用
var_export()而不是var_dump(),以便我们可以复制粘贴并进行测试? -
@EzzatHarky 请也添加预期结果
-
@AksenP 不,我没有得到答案
-
@Shibon 添加结果
标签: php arrays loops object foreach