2016-10-04 3 views
2

array_diff() функция не показывает правильный результат: -array_diff() функция не показывает правильный результат

Первый массив: -

 Array(
    [designation_id] => 1 
    [name] => Y 
    [fathers_name] => Z 
    [mothers_name] => F 
    [spouse_name] => d 
    [gender] => F 
    [last_achieved_degree] => 2 
    [date_of_birth] => 1960-10-17 
    [date_of_joining] => 1987-02-04 
) 

Второй массив: -

Array 
    (
     [designation_id] => 9 
     [name] => M 
     [fathers_name] => N 
     [mothers_name] => O 
     [spouse_name] => 
     [gender] => M 
     [last_achieved_degree] => 1 
     [date_of_birth] => 1967-11-17 
     [date_of_joining] => 2016-01-01 
    ) 

Выход:

Array 
(
    [name] => Y 
    [fathers_name] => Z 
    [mothers_name] => F 
    [spouse_name] => d 
    [gender] => F 
    [last_achieved_degree] => 2 
    [date_of_birth] => 1960-10-17 
    [date_of_joining] => 1987-02-04 
) 

desi столбец идентификатора gnation не отображается в выходном результате. , если значение идентификатора-идентификатора равно 1, то этот индекс не отображается в выводе, иначе он показывает. это ошибка или что-то еще?

+0

Почему бы не показать? поделитесь своим сырым скриптом. –

+0

Ввод, который вы показываете, - это два разных массива? –

+0

то какой должен быть правильный выход? возможно, 'array_diff' на самом деле не то, что вам нужно. и где коды ваших испытаний? – Ghost

ответ

2

Поскольку ваши массивы ассоциативный массив, поэтому вам нужно использовать array_diff_assoc: -

<?php 

$a = Array(
    'designation_id' =>1, 
    'name' => 'Y', 
    'fathers_name' => 'Z', 
    'mothers_name' => 'F', 
    'spouse_name' => 'd', 
    'gender' => 'F', 
    'last_achieved_degree' => 2, 
    'date_of_birth' => '1960-10-17', 
    'date_of_joining' => '1987-02-04' 
); 

$b =Array 
(
    'designation_id' => 9, 
    'name' => 'M', 
    'fathers_name' => 'N', 
    'mothers_name' => 'O', 
    'spouse_name' => '', 
    'gender' => 'M', 
    'last_achieved_degree' => 1, 
    'date_of_birth' => '1967-11-17', 
    'date_of_joining' => '2016-01-01', 
); 

echo "<pre/>";print_r(array_diff_assoc($a,$b)); 

Выход: - https://eval.in/654658

проверить больше описание и примеры: - http://sg2.php.net/manual/en/function.array-diff-assoc.php

Почему array_diff() не работал: - https://stackoverflow.com/a/4742438/4248328

+0

спасибо. оно работает. но задайте вопрос, почему array_dif() не показывает индекс идентификатора-идентификатора, когда его значение равно 1, в противном случае его отображение корректно. – Feroz

+0

@Feroz, что я тоже изумлен, но я смотрю на него. И обновится здесь, когда я получу ответ. Спасибо за маркировку. :) –

+0

@Feroz Я добавил ссылку, почему 'array_diff()' не работал.check и если не понятно, сообщите мне. –

1

array_diff вычисляет разницу без сравнения ключей. Во втором массиве есть [last_achieved_degree] => 1, который удаляет [designation_id] => 1.
Пробег: array_diff_assoc.

+0

правильный catch. +1 –

Смежные вопросы