【问题标题】:get repeated value from parent array and not repeated value from parent array从父数组中获取重复值,而不是从父数组中获取重复值
【发布时间】:2018-09-10 07:08:37
【问题描述】:

一个是父数组,另一个是过滤数组。 从那里我只想设置两个单独的数组 公共数组 唯一数组

$a = array([0]=> Array
    (
        [id] => 22429
        [user_id] => 0
        [shop_id] => 78
        [start_date] =>
        [fn_point] => 0
    ),[1]=> Array
    (
        [id] => 22430
        [user_id] => 0
        [shop_id] => 78
        [start_date] =>
        [fn_point] => 0
    ),[2]=> => Array
    (
        [id] => 22431
        [user_id] => 0
        [shop_id] => 78
        [start_date] =>
        [fn_point] => 0
    ),[3] => Array
    (
        [id] => 22432
        [user_id] => 0
        [shop_id] => 78
        [start_date] =>
        [fn_point] => 0
    ));

$b = array("0"=> Array
    (
        [id] => 22428
        [user_id] => 0
        [shop_id] => 78
        [start_date] =>
        [fn_point] => 0
    ),"1" => Array
    (
        [id] => 22430
        [user_id] => 0
        [shop_id] => 78
        [start_date] =>
        [fn_point] => 0
    ),[2]=> Array
    (
        [id] => 22431
        [user_id] => 0
        [shop_id] => 78
        [start_date] =>
        [fn_point] => 0
    ),[3] => Array
    (
        [id] => 22432
        [user_id] => 0
        [shop_id] => 78
        [start_date] =>
        [fn_point] => 0
    ));;

唯一数组的输出将是

$c = array(
        [0]=> Array
        (
            [id] => 22429
            [user_id] => 0
            [shop_id] => 78
            [start_date] =>
            [fn_point] => 0
        )
    );

普通数组的输出将是

$u = array(
        [0]=> Array
        (
            [id] => 22430
            [user_id] => 0
            [shop_id] => 78
            [start_date] =>
            [fn_point] => 0
        ),[1]=> Array
        (
            [id] => 22431
            [user_id] => 0
            [shop_id] => 78
            [start_date] =>
            [fn_point] => 0
        ),[2]=> Array
        (
            [id] => 22432
            [user_id] => 0
            [shop_id] => 78
            [start_date] =>
            [fn_point] => 0
        )
    );

【问题讨论】:

  • array_diff, array_intersect.
  • 为什么这些数字是字符串,而不是整数?
  • @NilsWerner 为什么重要?它可能是一个被解码的 Json 文件。
  • 当您提出问题时,请确保您提出的问题与实际代码和变量相关。一维数组和多维数组是完全不同的句柄

标签: php arrays filter unique array-filter


【解决方案1】:

要从两个数组中获取共同点,请使用array_intersect()

$c = array_values(array_intersect($a,$b)); //array_values() used for re-indexing final array
print_r($c);

输出:- https://eval.in/1055829

使用array_diff()

$c = array_values(array_diff($a,$b));//array_values() used for re-indexing final array
print_r($c);

输出:- https://eval.in/1055830

参考:-

array_values()

对于您编辑的问题申请 foreach() 以及 in_array()array_column()

$final_array = [];

foreach($a as $key=>$val){
  if(in_array($val['id'],array_column($b,'id'))){
    $final_array[] = $val;
  }

}

print_r($final_array); // common values array 

输出:- https://eval.in/1055838

$final_array = [];

foreach($a as $key=>$val){
  if(!in_array($val['id'],array_column($b,'id'))){
    $final_array[] = $val;
  }

}

print_r($final_array); // non common value array

输出:-https://eval.in/1055839

【讨论】:

    【解决方案2】:

    对于你的普通数组:

    array_intersect($a, $b);
    

    为您的独特阵列:

    array_unique(array_merge($a, $b), SORT_REGULAR);
    

    【讨论】:

    • 我已经更新了我的问题。你能检查一下吗? array_unique 不支持。
    【解决方案3】:

    Array_intersectarray_diff

    $a = array('1','2','3','4');
    $b = array('4','5','6','7');
    
    $c = array_intersect($a, $b);
    var_dump($c); //4
    
    $d = array_diff($a,$b);
    var_dump($d); //1,2,3
    

    https://3v4l.org/Ut8JW

    【讨论】:

    • 我已经更新了我的问题。你能检查一下吗? \PhpErrorException: 数组到字符串的转换
    猜你喜欢
    • 2021-03-10
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2016-03-14
    • 2021-11-17
    • 2016-05-27
    相关资源
    最近更新 更多