php array_intersect array index issue

* version.php

<?php

echo "PHP version: ". phpversion().PHP_EOL;

$boughtSubjects = array('wuli', 'huaxue');
$all = array('yuwen', 'shuxue', 'yingyu', 'wuli', 'huaxue', 'shengwu');

$a = array_intersect($all, $boughtSubjects);
var_dump(json_encode($a));

$subjects = array();
foreach ($a as $key => $value) {
    $subjects[] = $value;
}

var_dump(json_encode($subjects));

 

$ php version.php
PHP version: 7.2.8
string(25) "{"3":"wuli","4":"huaxue"}"
string(17) "["wuli","huaxue"]"

http://php.net/manual/en/function.array-intersect.php

希望返回数组,结果是对象. 可以通过array_values转换

http://php.net/manual/en/function.array-values.php

 

* intersect.php

<?php

class Arr {
    public static function filter(array &$a, callable $c) {
        for ($i = 0; $i < count($a);) {
            if (call_user_func($c, $a[$i]) ) {
                $i++;
            } else {
                self::unset($a, $i);
            }
        }
    }

    private static function unset(array& $arr, $i) {
        if ($i<0 || $i > count($arr)) {
            return;
        }
        for ($j = $i+1; $j < count($arr); $i++, $j++) {
            $arr[$i] = $arr[$j];
        }
        unset($arr[$i]);
    }
}


$b = array('其他', 'wuli', 'unknown', 'huaxue', '物理', '化学');
$all = array('yuwen', 'shuxue', 'yingyu', 'wuli', 'huaxue', 'shengwu');

// $a = array_filter($b, function($e) use ($all) {
//     return in_array($e, $all);
// });

$a = array_map(function($e) {return $e;}, $b);  // $a = $b;

Arr::filter($a, function($e) use ($all) {
    return in_array($e, $all);
});

echo json_encode($a).PHP_EOL;

* test:

$ php intersect.php
["wuli","huaxue"]

 

php 代码在线测试:

http://www.dooccn.com/php5.6/

 

关联博客:

https://blog.csdn.net/fareast_mzh/article/details/83508660

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fareast_mzh

打赏个金币

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值