2016-10-04 52 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 id列。 如果指定ID值为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时不显示指定id索引,否则显示正确。 – Feroz

+0

@Feroz我也很惊讶,但我期待着它。并将在这里更新时,我会得到一个答案。谢谢标记虽然。:) –

+0

@Feroz我已经添加了链接为什么'array_diff()'不working.check,如果不明白你让我知道。 –

1

array_diff计算不区分键的差异。在第二个数组中,您有[last_achieved_degree] => 1删除[designation_id] => 1
尝试array_diff_assoc

+0

正确的catch。 +1 –