PHP: Как найти разницу в двух многомерных массивах по пространственному ключу

У меня есть два многомерных массива, и я хочу найти разницу между этими двумя массивами, но как получить разницу на основе этого ключа subscription_plan_id,

Я использовал это: $result = array_diff_assoc($arr1, $arr2); но получаю эти ошибки:

Notice: Array to string conversion in /var/www/sitename/application/models/xxx_model.php on line 122

Notice: Array to string conversion in /var/www/sitename/application/models/xxx_model.php on line 122

Notice: Array to string conversion in /var/www/sitename/application/models/xxx_model.php on line 122

Notice: Array to string conversion in /var/www/sitename/application/models/xxx_model.php on line 122

Результаты массива:

Array
(
[0] => Array
(
[subscription_plan_id] => 13
[plan_month] => 1
[start_date] => 2015-03-13
[end_date] => 2015-04-12
[s_start_date] => 2015-02-12 09:29:33
[s_subscription_id] => 70
)

[1] => Array
(
[subscription_plan_id] => 2
[plan_month] => 1
[start_date] => 2015-03-13
[end_date] => 2015-04-12
[s_start_date] => 2015-02-12 09:26:50
[s_subscription_id] => 69
)

)

Array
(
[0] => Array
(
[subscription_plan_id] => 2
)

[1] => Array
(
[subscription_plan_id] => 13
)

[2] => Array
(
[subscription_plan_id] => 36
)

[3] => Array
(
[subscription_plan_id] => 39
)

)

Я хочу этот результат:

Array
(
[0] => Array
(
[subscription_plan_id] => 36
)

[1] => Array
(
[subscription_plan_id] => 39
)

)

1

Решение

Я пробовал с array_diff_key и он прекрасно работает с вашим примером кода.

Попробуйте этот код:

$arr1 = array
(
array('subscription_plan_id' => '13', 'plan_month' => '1', 'start_date' => '2015-03-13', 'end_date' => '2015-04-12', 's_start_date' => '2015-02-12 09:29:33', 's_subscription_id' => '70'),
array('subscription_plan_id' => '2', 'plan_month' => '1', 'start_date' => '2015-03-13', 'end_date' => '2015-04-12', 's_start_date' => '2015-02-12 09:26:50', 's_subscription_id' => '69')
);

$arr2 = array
(
array('subscription_plan_id' => '2'),
array('subscription_plan_id' => '13'),
array('subscription_plan_id' => '36'),
array('subscription_plan_id' => '39')
);

$diff = array_diff_key($arr2, $arr1);

echo "<pre>";
print_r($diff);
echo "</pre>";
-1

Другие решения

Других решений пока нет …